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

Azure AD与Kubernetes OIDC集成问题:JWT缺失user_roles字段

解决Kubernetes OIDC与Azure AD集成时JWT缺失user_roles声明的问题

首先明确一点:Azure AD 默认不会在 ID Token 中返回名为user_roles的组声明,你需要手动配置应用注册来生成这个字段。下面是具体的操作步骤:

1. 配置Azure AD应用注册的组声明

  • 登录Azure门户,找到你用于Kubernetes OIDC集成的应用注册。
  • 切换到左侧菜单的令牌配置页面,点击顶部的添加组声明。
  • 在弹出的配置窗口中:
    • 选择你想要包含的组类型(比如「安全组」或「Microsoft 365组」);
    • 在「组 ID 或组名称」选项中,选择你需要返回的组标识形式(名称或ID);
    • 关键一步:找到「自定义声明名称」输入框,填入user_roles(这会把默认的groups声明替换成你需要的字段名);
    • 确认配置后点击添加保存。

2. 验证API权限配置

  • 切换到应用注册的API权限页面,确保已添加Directory.Read.All的委托权限(用于读取用户所属的组信息),并且已经完成管理员同意(否则普通用户登录时可能无法获取组数据)。

3. 确认Kubernetes API Server参数

确保你的API Server除了--oidc-groups-claim user_roles外,还正确配置了以下核心参数:

--oidc-issuer-url=https://login.microsoftonline.com/<你的租户ID>/v2.0
--oidc-client-id=<你的应用注册客户端ID>
--oidc-username-claim=email  # 也可以用upn等其他用来标识用户的声明字段

4. 重新获取JWT并验证

完成上述配置后,重新触发OIDC登录流程获取新的ID Token,用jwt.io之类的工具解码后,应该就能看到user_roles字段,里面包含用户所属的组信息了。

小提示:如果修改配置后仍未生效,可能需要等待几分钟让Azure AD同步配置,或者检查是否有缓存的旧Token未过期。

内容的提问来源于stack exchange,提问作者Joel Guerra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:43:13