我正在尝试在Azure Active Directory上进行一些非常快速的测试,并且我需要一个工具,该工具将允许我快速向AAD进行身份验证并调用AAD Graph API。
我已经在目录中注册了本机客户端应用程序,并且已将其设置为具有适当的权限来调用AAD Graph API。
我想看一下我的AAD token 以及调用后Graph API的输出。如何使用PowerShell快速完成此任务?
最佳答案
PowerShell允许您将.NET程序集直接加载到命令行中。这意味着您可以加载ADAL (Azure Active Directory Authentication Libraries)并使用它来真正简化身份验证体验。从ADAL获得 token 后,只需使用Invoke-RestMethod
cmdlet即可调用AAD Graph API。
首先,您需要下载并保存ADAL的.NET dll。下载链接可以在on Nuget中找到。
注意:此处我们专门使用ADAL v2。
从\lib\net45\
中提取内容并将其复制到您的工作目录中。我将文件放在自己的“ADAL”文件夹中,以使其分开。
然后,您应该能够使用以下命令创建新的PowerShell脚本:
# 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
注意:您需要在此脚本中更新App ID,Tenant ID和Reply URL。我还预先配置了AAD Graph API调用,以返回我的租户中的用户,但是您可以将此REST调用更改为所需的任何内容。
成功运行脚本后,您应该在工作目录中获得2个新文件:一个文本文件,该文件包含已编码的JSON访问 token ,可以在this等网站上对base64进行解码,以及一个带有AAD图响应的JSON文件API。
让我知道这是否有帮助!