已配置应用角色等,如何在Microsoft Entra ID令牌中加入角色
解决方案
1. 确认应用角色配置正确性
检查定义角色的API应用清单中appRoles字段,确保:
allowedMemberTypes包含User(针对用户分配角色的场景)isEnabled设为truevalue字段值与后端代码中Roles.GlobalAdmin的取值完全一致(如均为GlobalAdmin)
2. 验证令牌请求的受众匹配
获取令牌时,请求的resource或scope参数必须指向定义应用角色的API应用的客户端ID,确保令牌的aud字段值与该API应用ID一致。若请求的是客户端应用自身的令牌,角色声明不会被注入。
3. 确认权限授予状态
对应应用角色的API权限必须完成管理员同意(应用权限场景)或用户同意(委派权限场景),可在Microsoft Entra ID的应用权限页面检查权限状态是否为“已授予”。
4. 配置API应用的令牌格式
在API应用的清单中,将accessTokenAcceptedVersion设置为2,适配v2版本令牌格式,这是角色声明出现在访问令牌中的必要条件。
5. 重新获取令牌
旧令牌不会自动更新角色信息,需让用户重新登录(或刷新令牌),获取新的访问令牌。
6. 后端认证配置适配
若框架未自动识别roles声明,可在认证配置中明确指定角色声明类型:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { RoleClaimType = "roles" }; });
内容的提问来源于stack exchange,提问作者Sergey Nikolaevich Guk
相关产品推荐
相关产品推荐

