You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Entra ID的common端点返回不可读访问令牌及后续问题

Entra ID多租户场景下访问令牌问题解决方案

端点行为差异原因

  • common端点:作为多租户通用入口,当请求的scope未明确指向具体受保护资源(如Microsoft Graph或自定义API)时,Entra ID会返回不透明的用户断言令牌——这类令牌并非JWT格式,仅用于获取ID令牌/刷新令牌,无法直接调用任何API。
  • 租户特定v2.0端点:由于租户上下文明确,当请求包含具体资源的scope时,Entra ID会生成针对该资源的JWT格式访问令牌,可直接用于对应API调用。

核心问题解决步骤

1. 让common端点返回可用于Graph的JWT令牌

修改SPA的scope,明确包含Microsoft Graph的委托权限,示例:

openid email offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Group.Read.All

注意:

  • 需在Entra ID的SPA应用注册中,添加上述Graph委托权限,并完成管理员授权(多租户场景需全局管理员同意)。
  • 此时从common端点获取的访问令牌将是JWT格式,受众为Microsoft Graph,可直接调用https://graph.microsoft.com/v1.0/me或组查询接口。

2. 正确配置OBO流程实现Spring API调用Graph

若需Spring API作为中间层调用Graph,需按以下步骤配置:

  • SPA侧:请求针对你的Spring API的自定义scope,示例:
    openid email offline_access api://{your-spring-api-client-id}/access_as_user
    
    确保该自定义scope已在Spring API的Entra ID应用注册中暴露,且SPA已授权该scope。此时SPA获取的访问令牌受众为你的API的client-id,是JWT格式。
  • Spring API侧:使用OBO流程交换Graph访问令牌,请求参数示例:
    POST https://login.microsoftonline.com/common/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
    client_id={your-spring-api-client-id}
    client_secret={your-spring-api-client-secret}
    assertion={spa-access-token}
    scope=https://graph.microsoft.com/User.Read https://graph.microsoft.com/Group.Read.All
    requested_token_use=on_behalf_of
    
  • 错误AADSTS500131修复:该错误通常是因为原令牌(SPA的访问令牌)的受众不是你的API,或API未被授权进行OBO交换。需确保SPA请求的是你的API的自定义scope,且API应用注册中已正确配置权限。

3. 修正自定义scope配置问题

  • 自定义scope的正确格式为api://{your-api-client-id}/{scope-name},而非api://{myTenant}/{myScope}——租户ID不应出现在scope路径中,需替换为API的client-id。
  • 若去掉openid后得到受众为00000002-0000-0000-c000-000000000000的JWT,说明你的scope被默认映射到了Microsoft Graph,但未明确指定权限,导致令牌无法正确用于目标API。需明确指定资源的完整scope路径。

关于用户组溢出的替代方案

若ID令牌中组过多导致溢出,除了通过Graph API查询外,还可在Entra ID应用注册中配置组声明筛选,仅返回需要的安全组,减少ID令牌体积;或使用增量查询方式获取组信息。

内容的提问来源于stack exchange,提问作者John Claxton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 13:13:17