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

多团队用户角色的JWT映射方案及主流IAM环境默认实现方式

多团队多角色的JWT映射方案及主流IAM支持情况

一、JWT的自定义映射实现

针对用户同时隶属于多个团队且各团队角色不同的场景,核心是要在JWT中明确绑定团队与角色的关联关系,避免单独的roles字段导致角色归属混淆。推荐的映射方式如下:

  • 使用自定义Claim存储团队-角色组合:新增一个如team_role_assignments的数组类型Claim,每个元素包含团队标识和对应角色,示例Payload结构:
{
  "sub": "user123",
  "name": "John Doe",
  "team_role_assignments": [
    {"team": "MANAGEMENT", "role": "EMPLOYEE"},
    {"team": "LOCATION_1", "role": "MANAGER"},
    {"team": "LOCATION_2", "role": "MANAGER"}
  ],
  "exp": 1735689600
}
  • 辅助标准Claims补充信息:可以用groups Claim存储用户所属团队的唯一ID(如MANAGEMENT的UUID),配合team_role_assignments做交叉验证,但核心的角色归属必须明确绑定到团队。
  • 注意事项:避免在JWT中存储敏感团队/角色信息;控制Payload大小,避免JWT过长影响传输;必须使用强签名算法(如RS256)确保Claims不被篡改。

二、主流IAM环境的默认映射支持

Azure Entra ID(原Azure AD)

Entra ID没有直接的"团队-角色"绑定默认Claim,但可以通过以下两种方式实现:

  1. 组+自定义角色映射:
    • 创建对应团队的安全组(如MANAGEMENT、LOCATION_1),并在企业应用中创建自定义角色(EMPLOYEE、MANAGER)。
    • 将用户添加到对应团队组,同时为组分配应用内的角色。
    • 通过Entra ID的自定义Claims策略,将组ID和角色组合成数组格式,注入到JWT的自定义Claim中(比如team_roles)。
  2. Enterprise Applications角色分配:
    • 如果团队对应不同的应用实例,可直接在每个应用中为用户分配对应角色,JWT的roles Claim会返回当前应用的角色;但跨团队(跨应用)的角色需要通过自定义Claim统一返回。

其他主流IAM(Okta、Ping Identity)

这类IAM工具均支持自定义Claims配置,可通过用户属性、组关联、角色分配等数据源,拼接出团队-角色的组合数组,注入到JWT中。部分工具还提供可视化的Claim映射界面,无需手动编写规则。

内容的提问来源于stack exchange,提问作者Gideon Visbeen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:22:32