我们如何在 okta 访问令牌或 id 令牌中添加组角色声明

问题描述 投票:0回答:1

我正在开发一个 React 应用程序,想要从访问令牌或 ID 令牌中检索所有组角色而不是组名称。我尝试添加自定义声明,但找不到任何使用 “Okta 表达式语言” 获取此信息的示例。

我的目标是添加一个名为“group_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,角色:managersupervisor

UserGroup 具有单一角色:user

所需输出:

“group_roles”:“经理、主管、用户”

oauth-2.0 authorization okta
1个回答
0
投票

如果您想将名为 group_roles 的自定义声明添加到您的令牌并包含组中的所有角色:

1 - 确保 Okta 中的组已定义角色:

  • 转到 Okta 管理中的目录 > 组 > 组配置文件
  • 为群组配置文件添加自定义属性并设置角色,如
    manager
    supervisor

2 - 创建自定义声明

  • 转到 Okta 中的安全 > API > 授权服务器
  • 打开您的授权服务器并转到声明
  • 添加新声明:
    • 姓名
      group_roles
    • 包含在:访问令牌或ID令牌。
    • 值类型:表达式。
    • 表达式:如果角色存储在
      groupRoles
      属性中,请使用此表达式:

user.groups.filter(group.groupRoles != null).map(group.groupRoles).flatten()

如果角色在组名称中,请使用:

user.groups.filter(group.name.startsWith("Role-")).map(group.name.substringAfter("Role-"))

© www.soinside.com 2019 - 2024. All rights reserved.