如何在Azure Access Token中获取角色?Angular MSAL场景求助
如何让Azure AD的Access Token包含角色信息(Angular MSAL场景)
你当前能从ID Token中获取角色,但Access Token里无相关信息,可按以下步骤排查解决:
确认API应用的角色配置与权限同意
在Azure AD的API应用注册中,先确保已在「应用角色」菜单下定义好所需角色(如Admin、User);同时检查客户端应用是否已授予并完成这些权限的同意操作——应用权限需管理员同意,委托权限需用户同意。请求Access Token时指定正确的API范围
Angular MSAL获取Access Token时,必须传入目标API的专属范围(而非仅OIDC默认范围),示例代码:this.authService.acquireTokenSilent({ scopes: ['api://{你的API应用ClientID}/access_as_user'] // 替换为实际API范围 }).then(response => { console.log(response.accessToken); // 解码此令牌查看角色是否存在 });若未指定API范围,Azure AD不会将角色注入Access Token。
验证API应用的令牌配置
进入API应用的「令牌配置」菜单,确认已添加roles声明并设置为「发出此声明」,确保角色声明会被包含在针对该API的Access Token中。检查角色分配对象
- 若使用应用权限(客户端凭证流):需在API应用对应的「企业应用」→「用户和组」中,将客户端应用的服务主体分配到对应角色。
- 若使用委托权限:需在API应用对应的「企业应用」→「用户和组」中,将目标用户/组分配到对应角色。
内容的提问来源于stack exchange,提问作者the programmer
相关产品推荐
相关产品推荐

