我正在开发一个 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,角色:manager 和 supervisor
UserGroup 具有单一角色:user
所需输出:
“group_roles”:“经理、主管、用户”
如果您想将名为 group_roles 的自定义声明添加到您的令牌并包含组中的所有角色:
1 - 确保 Okta 中的组已定义角色:
manager
、supervisor
等2 - 创建自定义声明
group_roles
groupRoles
属性中,请使用此表达式:user.groups.filter(group.groupRoles != null).map(group.groupRoles).flatten()
如果角色在组名称中,请使用:
user.groups.filter(group.name.startsWith("Role-")).map(group.name.substringAfter("Role-"))