当前位置: 首页 > 知识库问答 >
问题:

如何对AAD进行身份验证,并使用PowerShell将Graph API作为本机客户端应用程序调用?

司寇祖鹤
2023-03-14

我正在尝试在Azure Active Directory上做一些非常快速的测试,我需要一个工具,它允许我快速对AAD进行身份验证,并调用AAD Graph API。

我已经在我的目录中注册了一个本机客户端应用程序,并且我已经将它设置为具有调用AAD Graph API的适当权限。

我想看一看我的AAD令牌,以及调用后图形API的输出。如何使用PowerShell快速完成这一任务?

共有1个答案

司马辉
2023-03-14

>>有关如何使用客户端凭据流创建用于仿真后台进程客户端应用程序的类似脚本的说明,请参阅此处。

PowerShell允许您将.NET程序集直接加载到命令行中。这意味着您能够加载ADAL(Azure Active Directory Authentication Libraries)并使用它来真正简化身份验证体验。从ADAL获取令牌后,可以简单地使用invoke-restmethodcmdlet调用AAD Graph API。

首先,您需要下载并保存ADAL的.NET DLL。下载链接可以在NuGet上找到。

# Load ADAL
Add-Type -Path ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

# Output Token and Response from AAD Graph API
$accessToken = ".\Token.txt"
$output = ".\Output.json"

# Application and Tenant Configuration
$clientId = "<AppIDGUID>"
$tenantId = "<TenantID>"
$resourceId = "https://graph.windows.net"
$redirectUri = New-Object system.uri("<ReplyURL>")
$login = "https://login.microsoftonline.com"

# Get an Access Token with ADAL
$authContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ("{0}/{1}" -f $login,$tenantId)
$authenticationResult = $authContext.AcquireToken($resourceId, $clientID, $redirectUri) 
($token = $authenticationResult.AccessToken) | Out-File $accessToken

# Call the AAD Graph API
$headers = @{ 
    "Authorization" = ("Bearer {0}" -f $token);
    "Content-Type" = "application/json";
}

Invoke-RestMethod -Method Get -Uri ("{0}/{1}/users?api-version=1.6" -f $resourceId, $tenantId) -Headers $headers -OutFile $output

注意:您需要更新此脚本中的应用程序ID、租户ID和回复URL。我还预先配置了AAD Graph API调用以返回租户中的用户,但是您可以将此REST调用更改为任何您想要的。

成功运行脚本后,应该会在工作目录中获得两个新文件:一个文本文件,其中包含编码的JSON访问令牌,它可以在类似这样的站点上进行base64解码;另一个JSON文件带有AAD Graph API的响应。

如果有帮助就告诉我!

 类似资料:
  • 我想看一看我的AAD令牌,以及调用后图形API的输出。如何使用PowerShell快速完成这一任务?

  • 问题内容: 我尝试阅读尽可能多的不同答案和帖子,但是我仍然不能完全满足自己的需求。我正在尝试找出处理用户身份验证,登录等的最佳方法(最有效,但大多数情况下更安全)。 我有一个运行在Express上的Node.js服务器;我有一个Angular.js网络应用程序;而且我有一个iOS应用。我使用Express /Node.js公开了RESTful API。 我读到的第一件事是使用cookie,并在服务

  • 问题内容: 我需要导入证书,以便向Spring Boot应用程序中的外部服务发出http请求。 我该如何设置Spring Boot来做到这一点? 那里有很多信息,但我发现所有这些都令人困惑。似乎我可能只需要创建类似“ truststore.jks”密钥库的内容并导入正确的证书,然后将一些条目添加到我的application.properties中即可。 问题答案: 打开您的终端或 回答所有问题。在

  • null 我研究了OAuth2隐式授权,但它要求用户在成功验证后批准/拒绝应用程序。它在我的情况下不起作用,因为我同时拥有应用程序和API。 我查看了OAuth2密码授权,它并不完美,因为我需要公开client_id/client_secret。 我关注OAuth2的原因是因为该API最终将是公开的。 忘记OAuth2,在用户发布用户名/密码时手动生成access_token(在本例中,当API公

  • 如何用Apache CXF实现这一点?