这是我的 PowerShell 脚本
$connectionDetails = @{
'TenantId' = '****-****'
'ClientId' = '****-****'
'Interactive' = $true
'Scopes' = '****-****'
'RedirectUri' = '****-****'
}
$token = Get-MsalToken @connectionDetails
$accessToken = $token.AccessToken
write-output $accessToken
其错误如下:
AADSTS7000218:请求正文必须包含以下参数:“client_assertion”或“client_secret”
为什么我会收到此错误?我该如何修复它?
请参见公共客户端和机密客户端应用程序之间的差异.
机密客户端应用程序可以安全地保守应用程序的秘密,而公共客户端则不然。
因此,您遇到的错误意味着您的应用程序注册是机密客户端应用程序(当您创建它时,您选择Web)这需要您提供ClientSecret
,但你没有指定它。
所以你有两个选择来解决它。
第一个是提供ClientSecret
在你的脚本中(不要修改 Azure 门户上的任何内容):
$connectionDetails = @{
'TenantId' = '****-****'
'ClientId' = '****-****'
'ClientSecret'= '****-****'
'Interactive' = $true
'Scopes' = '****-****'
'RedirectUri' = '****-****'
}
第二个是将您的应用程序注册从机密客户端应用程序更改为
Azure 门户上的公共客户端应用程序 -> 您的应用程序注册 -> 清单。 (不要修改你的脚本)
The 获取MsalToken.ps1还包括 2 个示例:
.EXAMPLE
PS C:\>Get-MsalToken -ClientId '00000000-0000-0000-0000-000000000000' -TenantId '00000000-0000-0000-0000-000000000000' -Interactive -Scope 'https://graph.microsoft.com/User.Read' -LoginHint [email protected]
Force interactive authentication to get AccessToken (with MS Graph permissions User.Read) and IdToken for specific Azure AD tenant and UPN using client id from application registration (public client).
.EXAMPLE
PS C:\>Get-MsalToken -ClientId '00000000-0000-0000-0000-000000000000' -ClientSecret (ConvertTo-SecureString 'SuperSecretString' -AsPlainText -Force) -TenantId '00000000-0000-0000-0000-000000000000' -Scope 'https://graph.microsoft.com/.default'
Get AccessToken (with MS Graph permissions .Default) and IdToken for specific Azure AD tenant using client id and secret from application registration (confidential client).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)