如何调用Microsoft Graph API获取Azure AD B2C租户Policy Keys并解决认证错误
解决Azure AD B2C Policy Keys获取的InvalidAuthenticationToken错误及调用步骤
一、核心结论:门户凭据的Basic Auth方式完全错误
Microsoft Graph API不支持用Azure门户的用户名/密码通过Basic Auth调用B2C的Trust Framework相关端点,这是你收到InvalidAuthenticationToken错误的直接原因。必须采用OAuth 2.0客户端凭据流获取有效令牌。
二、调用/trustFramework/keySets端点的完整步骤
1. 注册并配置B2C应用程序
- 在你的Azure AD B2C租户中注册守护程序/后端类型应用(服务到服务调用无需用户交互)
- 为应用添加API权限:选择
Microsoft Graph-> 应用权限 -> 按需勾选TrustFrameworkKeySet.Read.All或TrustFrameworkKeySet.ReadWrite.All,然后点击授予管理员同意(这一步必须完成,否则令牌会缺少权限声明) - 生成客户端密码:在应用的「证书和密码」页面创建客户端密码,务必保存好该密码(仅显示一次)
2. 获取访问令牌
采用客户端凭据流请求令牌,请求地址:
POST https://login.microsoftonline.com/{你的B2C租户ID}/oauth2/v2.0/token
请求体使用x-www-form-urlencoded格式,参数如下:
grant_type:client_credentialsclient_id: 你的应用程序IDclient_secret: 你生成的客户端密码scope:https://graph.microsoft.com/.default
3. 调用目标端点
在Postman中发送GET请求:
- 请求地址:
https://graph.microsoft.com/beta/trustFramework/keySets - 请求头添加:
Authorization: Bearer {你获取到的访问令牌}
三、常见错误排查
- 确认令牌的
aud(受众)为https://graph.microsoft.com,而非B2C租户域名 - 检查应用权限是否已完成管理员同意,未同意的话令牌中不会包含对应权限
- 必须使用beta版本的Graph API,
trustFramework系列端点目前仅在beta分支可用 - 验证租户ID正确性,避免混淆普通Azure AD租户与B2C租户
内容的提问来源于stack exchange,提问作者Disco Globeulon
相关产品推荐
相关产品推荐

