运行PowerShell脚本获取Azure AD令牌时遇AADSTS900144错误
解决Azure AD令牌请求的AADSTS900144错误
问题原因
请求体格式错误,application/x-www-form-urlencoded类型的请求不能用大括号包裹字符串内容,PowerShell会把整个大括号内的内容视为单一参数,导致Azure AD无法识别grant_type参数。
修正后的脚本
将请求体改为哈希表格式,PowerShell会自动完成application/x-www-form-urlencoded的编码:
Invoke-RestMethod -Method POST ` -Uri 'https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token' ` -Header @{'Content-type' = 'application/x-www-form-urlencoded'} ` -Body @{ grant_type = 'client_credentials' client_id = '<clientID>' scope = 'https://graph.microsoft.com/.default' client_secret = '<clientSecret>' }
额外说明
- 移除了URL中的
api-version=1.6参数,v2.0令牌端点不需要该参数,多余参数可能引发不必要的问题。 - 使用反引号(`)换行是为了提升脚本可读性,也可以将代码写在同一行。
- 请将
<tenantID>、<clientID>、<clientSecret>替换为实际的租户ID、客户端ID和客户端密钥。
内容的提问来源于stack exchange,提问作者DevOps QA
相关产品推荐
相关产品推荐

