Okta 不返回令牌中的自定义声明

Okta not returning custom claims in tokens

我刚刚在 Okta 注册了一个开发测试帐户,以使用 Okta 的身份验证服务和用户管理来测试 OIDC。

使用他们的管理门户,我创建了第二个名为 Test Group 的组以及默认的 Everyone 组,并将我的单个用户添加到两个组。

然后我添加了一个名为 My SPA 的应用程序,并为测试组分配了对此应用程序的访问权限。

使用经典 UI,然后我编辑了 OpenID Connect ID 令牌部分并将组声明类型设置为 Expression 并添加 groups 作为声明名称和 getFilteredGroups(app.profile.groupwhitelist, "group.name", 40) 作为表达式。

然后我去编辑了授权服务器。我添加了一个名为 'groups' 的声明,其正则表达式为 *。与任何范围、访问令牌一起使用并始终包含。

然后我使用令牌预览选择我的用户并使用隐式授权流程但没有组显示。

如何让用户组显示为来自 Okta 身份验证服务器的 ID 或访问令牌中的声明?

编辑 我的截图:

我只使用开发者控制台进行配置。这是我的做法:

导航至 API > 授权服务器,单击授权服务器选项卡并编辑默认值。单击声明 选项卡并添加声明。将其命名为 "groups" 或 "roles",并将其包含在 ID 令牌中。将值类型设置为 "Groups" 并将过滤器设置为 .*.

的正则表达式

您需要添加 "groups" 范围。在scope中,除了profile和openid

外,还要添加"groups"

我认为创建此处的组是为了将用户放置在各自的桶中(例如管理员/用户等),以便通过了解用户组,可以为授权派生角色。 但是,我会建议在用户配置文件中使用 Okta 的自定义属性,以便用户信息可以具有必需的属性。 Custom Attribute 可以设置为 Dropdown 样式的 Enumeration 以供选择,也可以在系统中添加 User 时标记为 Mandatory。 https://support.okta.com/help/s/article/How-to-create-dropdown-enumerated-custom-attributes-in-Okta?language=en_US

添加自定义属性 - https://help.okta.com/en/prod/Content/Topics/users-groups-profiles/usgp-add-custom-user-attributes.htm

并将属性映射到 Okta 配置文件 - https://help.okta.com/en/prod/Content/Topics/users-groups-profiles/usgp-about-attribute-mappings.htm

希望这也能有所帮助。