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

Azure AD v2角色未包含在Access Token/ID Token中的问题求助

解决Azure AD v2角色未出现在Access Token/ID Token中的问题

针对你遇到的角色未出现在token中的问题,可按以下步骤排查:

1. 验证应用角色配置

  • 确认Node应用注册中添加的是应用角色(Application Roles),且角色的allowedMemberTypes包含User(外部用户属于User类型)。如果角色仅允许Application类型,用户分配后不会出现在token中。
  • 检查角色的value字段是否填写正确,该值会作为roles声明的内容出现在token里。

2. 确认Access Token的受众匹配

解码你的Access Token(可使用jwt.ms),检查aud字段是否与Node应用的Client ID完全一致。如果受众不匹配,说明该token并非针对你的Node API生成,角色自然不会被注入。

3. 重新验证外部用户的角色分配

  • 确认外部用户已完成租户邀请的接受流程,未接受邀请的用户无法获得角色权限。
  • 在Entra ID的用户列表中找到该用户,进入“已分配的角色”页面,确认应用角色已成功分配且状态正常。

4. 避免使用旧Refresh Token获取Token

角色分配完成后,旧的Refresh Token不会自动同步新的权限。请让用户完全退出登录后重新登录,通过Authorization Code Flow获取新的Access Token,而非使用现有Refresh Token刷新。

5. 检查前端MSAL请求配置

  • 确保Angular前端在请求Access Token时,指定的scopes是针对Node API的正确范围(如api://[node-application-Id]/TimeSheetTemplate.ReadWrite)。
  • 验证MSAL Angular的token获取逻辑,确保请求的是Node API的token,而非前端应用自身的ID Token(ID Token默认不会包含应用角色,应用角色通常应出现在Access Token中)。

6. 确认应用注册的外部用户访问权限

在Node应用的注册页面,进入“认证”->“支持的账户类型”,确认选择了允许外部用户访问的选项(如“任何组织目录中的用户和个人Microsoft账户”)。若限制为内部用户,外部用户的角色权限无法正常生效。

7. 检查Token声明的默认行为

Azure AD v2端点中,应用角色默认会以roles声明的形式出现在针对API的Access Token中。如果解码后仍无该字段,可在Node应用注册的“令牌配置”中,确认是否手动添加了roles声明并启用。

内容的提问来源于stack exchange,提问作者Abdul Khader

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:44:58