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

如何在Okta Access Token/ID Token中添加group_roles自定义声明

Okta自定义声明:获取用户所有组角色的表达式

我正在开发一款React应用,希望从Access Token或ID Token中获取所有组角色(而非组名称)。尝试添加自定义声明,但找不到用Okta表达式语言实现该需求的示例。想要添加名为group_roles的自定义声明,请问该声明的值应使用什么表达式?

试过但无效的表达式:

  • user.groups.roles
  • appuser.groups.roles
  • user.getGroups({'group.type': {'OKTA_GROUP', 'APP_GROUP'}})
  • user.groups.stream().filter(group → group.active).findFirst().orElse(null).name

示例场景:

某Okta用户隶属于两个组:

  • ManagerGroup,包含角色:manager和supervisor
  • UserGroup,包含角色:user

期望输出:

"group_roles" : "manager, supervisor, user"

正确表达式方案:

要实现该需求,可使用以下Okta表达式提取所有组的角色并拼接成目标格式的字符串:

user.groups.stream().flatMap(group -> group.roles.stream()).map(role -> role.name).collect(Collectors.joining(", "))

表达式说明:

  1. user.groups.stream():将用户所属的组集合转换为流
  2. flatMap(group -> group.roles.stream()):将每个组的角色流合并为单一的角色流,消除层级结构
  3. map(role -> role.name):提取每个角色的名称字段
  4. collect(Collectors.joining(", ")):将所有角色名称用「逗号+空格」拼接成一个字符串

配置注意:

  • 在Okta管理后台的自定义声明配置中,将上述表达式填入「值」字段,声明名称设置为group_roles
  • 确保用户所属组已正确配置对应角色,否则无法提取到有效内容
  • 确认你的Okta租户支持该表达式语法版本,部分旧版本可能需微调

内容的提问来源于stack exchange,提问作者zubair Ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:13:14