1

我想在Azure Active Directory上做一些非常快速的測試,並且我需要一個工具,它可以讓我快速向AAD進行身份驗證,並調用AAD Graph API。如何對AAD進行身份驗證並使用PowerShell將Graph API作爲Native Client應用程序調用?

我已經在我的目錄中註冊了一個Native Client應用程序,並且已經將其設置爲具有適當的權限來調用AAD Graph API。

我想看看我的AAD令牌,以及我的調用後Graph API的輸出。我如何使用PowerShell來快速完成此任務?

回答

2

>> See here for instructions on how to create a similar script for emulating a Daemon Client Application using the Client Credential Flow.

PowerShell允許.NET程序集加載到您的權利的命令行。這意味着您可以加載ADAL (Azure Active Directory Authentication Libraries)並使用它來真正簡化身份驗證體驗。從ADAL獲得令牌後,只需使用Invoke-RestMethod cmdlet撥打AAD Graph API即可。

首先,您需要下載並保存ADAL的.NET dll。下載鏈接可以在on Nuget找到。

注意:我們在這裏特別使用ADAL v2。

你可以用一個文件提取像7Z,WinZip的,等提取.nupkg的內容...

\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 

注意:您將需要更新的應用程序ID,租戶ID,並在此腳本回復網址。我還預先配置了AAD Graph API調用以返回租戶中的用戶,但您可以將此REST調用更改爲任何您想要的。

成功運行該腳本後,你應該得到2個新的文件在您的工作目錄:包含您的編碼的JSON訪問令牌,它可以像this網站使用base64解碼的文本文件,並用一個JSON文件來自AAD Graph API的響應。

讓我知道這是否有幫助!