1

我正在尝试使用 Powershell 从我的 Azure AD 获取 oauth 令牌。

我尝试将我的令牌生成到一个文本文件中,以查看我的请求第一步的结果。

我正在尝试获取 Azure 数字孪生令牌。您在 $resourceId 中看到的常量是 Microsoft 为请求 AzureDigitalTwins 提供的。这是我的脚本:

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

$resultToken = ".\TokenTest.txt"

# Conf here
$aadInstance = "https://login.microsoftonline.com/"
$tenantId = "myTenantID"
$applicationId = "myAppID"
$applicationSecretKey = "myAppSecret"
$resourceId = "0b07f429-9f4b-4714-9392-cc5e8e80c8b0"


# Get an Access Token with ADAL
$authContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext($aadInstance + $tenantId)
$clientCredential = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential($applicationId, $applicationSecretKey)
$authenticationResult = $authContext.AcquireTokenAsync($resourceId, $clientCredential)
($token = $authenticationResult.AccessToken) | Out-File $resultToken 

运行脚本后,我的文本文件为空,但没有错误。

我在 C# 中使用完全相同的代码来获取令牌,它运行良好,但显然不是在 Powershell 中。

这有问题吗?感谢您的回答。

4

1 回答 1

2

找到了答案!只需将 .GetAwaiter().GetResult() 添加到 AcquireTokenAsync 方法!

$authenticationResult = $authContext.AcquireTokenAsync($resourceId, $clientCredential).GetAwaiter().GetResult()
于 2019-05-22T14:58:17.150 回答