【问题标题】:Method invocation failed [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] does not contain a method named 'AcquireTokenAsync方法调用失败 [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] 不包含名为“AcquireTokenAsync”的方法
【发布时间】:2021-06-18 10:34:24
【问题描述】:

它没有读取 authcontext 中的值,不知道为什么,可以帮助我解决这个问题。使用最新版本的 ADAL v5.2.9

PowerShell

           
function Get-AccessToken
{​
    $tenantID = "<id>" 
    $AuthUri = "https://login.microsoftonline.com/$tenantID"    
    ########
    #SPN IDs.....
    #spn
    $AppId = ""
    #######
    # SPN cert thumbprints.......
    #spn
    $clientCertificate = Get-Item -Path Cert:\CurrentUser\My\<cert thumb>
    $resource = "<RestApi>"
    $adal = "<path to the dll>\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
    [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
    $authenticationContext = New-Object -TypeName Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext -ArgumentList $AuthUri
    $certificateCredential = New-Object -TypeName Microsoft.IdentityModel.Clients.ActiveDirectory.ClientAssertionCertificate -ArgumentList ($AppId, $clientCertificate)
    $authToken = $authenticationContext.AcquireTokenAsync($resource, $certificateCredential)
    $accessToken = $authToken.Result.AccessToken.Trim()
    $authToken.Result.AccessToken.Trim() | Clip
    Write-Host "Token length"
    Write-Host $accessToken.Length
    $accessToken
}​
#endregion
# Get access token, headers and body
$token = Get-AccessToken
    

出现以下错误

InvalidOperation: C:\Users\Ipaws-api.ps1:17
Line |
  17 |     $authToken = $authContext.AcquireTokenAsync($resource, $certificat …
     |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Method invocation failed because [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] does not
     | contain a method named 'AcquireTokenAsync'.
    
 

【问题讨论】:

    标签: azure-active-directory azure-powershell adal


    【解决方案1】:

    我尝试使用 AcquireTokenAsync 重现您的问题,但效果很好。

    第一步:在 PowerShell 中安装AzureAD

    Install-Module -Name AzureAD -AllowClobber
    Import-Module -Name AzureAD
    

    第 2 步:使用 Add-Type -Path 加载 ADAL 程序集。

    Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\AzureAD\2.0.2.135\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
    

    Step3:运行以下命令。

    $tenantId = "<your tenant id>"
    $clientId = "<your client id>"
    $key = "<your key>"
    
    $authUrl = "https://login.microsoftonline.com/${tenantId}/"
    $AuthContext = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext]$authUrl
    $cred = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential $clientId,$key
    $result = $AuthContext.AcquireTokenAsync("https://graph.microsoft.com/",$cred)
    $result.Result.AccessToken
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2013-07-03
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多