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

Azure AD认证后如何获取MVC应用内当前登录用户的分配角色

单租户Azure AD MVC应用获取用户分配角色方案

核心结论

角色信息默认可直接内置在Azure AD返回的ID令牌、访问令牌中,无需额外调用外部API即可完成校验和获取。

前置校验

  • 确保你已在对应Azure AD应用注册的「清单」中正确定义Admin、user两类应用角色(appRoles节点),且角色的allowedMemberTypes包含User
  • 确认用户角色分配操作是在「企业应用」→ 对应应用 →「用户和组」模块完成,而非其他入口分配

获取角色的两种方式

方式1:直接从当前用户身份上下文读取(推荐,无需额外请求)

ASP.NET MVC会自动解析令牌中的角色声明,你可以直接在控制器、视图中调用内置方法获取:

  • 校验用户是否属于某角色:直接调用User.IsInRole("Admin")返回布尔值即可完成权限判断
  • 读取用户所有角色:遍历User.Claims,筛选声明类型为http://schemas.microsoft.com/ws/2008/06/identity/claims/role的项,对应值即为用户被分配的角色

如果令牌中未返回roles声明,可在应用注册的「令牌配置」→「添加可选声明」,选择ID令牌,勾选roles项保存即可。

方式2:调用Microsoft Graph API获取(仅扩展场景使用)

如果需要获取角色的完整元信息(如角色描述、分配时间等),可调用GET /me/appRoleAssignments接口获取该用户的所有应用角色分配记录,该方式需要给应用额外配置User.Read、Directory.Read.All等Graph权限。

注意事项

  • 单租户场景下默认不会有跨应用的角色冲突,直接读取令牌内的roles声明即可满足绝大多数业务鉴权需求,无需额外调用API增加请求耗时
  • 角色名称大小写敏感,校验时需和你在应用注册中定义的value字段完全一致

内容的提问来源于stack exchange,提问作者Nava Ruban

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:04