使用Graph访问令牌调用Connect-MsolService失败求助
问题解决:Connect-MsolService 使用令牌报错 InvalidHeaderException
核心原因
MSOnline 模块(包含 Connect-MsolService 的模块)基于ADAL库开发,仅兼容Azure AD v1.0端点颁发的令牌,你当前用v2.0端点获取的令牌格式不被该模块识别,因此触发InvalidHeaderException。而AzureAD模块支持v2.0令牌,所以能正常运行。
修复步骤
- 切换授权端点为v1.0版本
- 用v1.0对应的scope获取令牌
修改后的完整代码
$TenantId = 'MyTenantId' # 替换为v1.0授权端点 $Authority = 'https://login.microsoftonline.com/{0}/oauth2/token' -f $TenantId $ClientId = 'MyAzureActiveDirectoryAppId' $ClientSecret = 'MyAzureActiveDirectoryAppSecret' $Parameters = @{ Authority = $Authority ClientId = $ClientId ClientSecret = (ConvertTo-SecureString -String $ClientSecret -AsPlainText -Force) # 指定使用v1.0端点获取令牌 EndpointVersion = 'v1.0' } # 使用v1.0的AD Graph scope $AadAccessToken = (Get-MsalToken @Parameters -Scopes 'https://graph.windows.net/.default').AccessToken # MSGraph令牌可通过v1.0端点获取,MSOnline主要依赖AD Graph令牌 $MsAccessToken = (Get-MsalToken @Parameters -Scopes 'https://graph.microsoft.com/.default').AccessToken Connect-MsolService -AdGraphAccessToken $AadAccessToken -MsGraphAccessToken $MsAccessToken -AzureEnvironment AzureCloud
额外注意事项
- 确保你的Azure AD应用已添加应用权限:
Directory.ReadWrite.All(Azure AD Graph权限分类下),并完成管理员同意 - 若仍报错,可通过
jwt.ms解析令牌,确认受众(aud字段)是否为https://graph.windows.net
内容的提问来源于stack exchange,提问作者Kanuc
相关产品推荐
相关产品推荐

