我刚刚与Okta注册了一个开发测试帐户,使用Okta的auth服务和用户管理来测试OIDC。
使用他们的管理门户,我创建了第二个名为Test Group的组以及默认的Everyone组,并将我的单个用户添加到两个组中。
然后我添加了一个名为My SPA的应用程序,并为该应用程序分配了测试组访问权限。
使用经典用户界面,我编辑了OpenID Connect ID令牌部分,并将群组声明类型设置为Expression
,并添加groups
作为声明名称,getFilteredGroups(app.profile.groupwhitelist, "group.name", 40)
作为表达式。< / p>
然后我去编辑了授权服务器。我添加了一个名为'groups'的声明,其RegEx为*。用于任何范围,访问令牌并始终包含。
然后我使用令牌预览选择我的用户并使用隐式授权流但不显示任何组。
如何让用户的组在Okta auth服务器的ID或访问令牌中显示为声明?
修改 我拥有的屏幕截图:
答案 0 :(得分:4)
我只使用开发者控制台来配置。我是这样做的:
导航至 API &gt; 授权服务器,单击授权服务器选项卡并编辑默认选项卡。点击声明标签和添加声明。将其命名为“groups”或“roles”,并将其包含在ID Token中。将值类型设置为“Groups”,并将过滤器设置为.*
的正则表达式。
答案 1 :(得分:0)
您需要添加“群组”范围。在范围内,除了profile和openid
之外,还要添加“groups”答案 2 :(得分:0)
我认为创建这里的组是为了将用户停放在各自的存储桶中(例如管理员/用户等),以便通过了解用户组,可以为授权派生角色。 但是,我会建议在用户配置文件中使用 Okta 的自定义属性,以便用户信息可以具有必需的属性。 自定义属性可以设置为下拉样式的枚举以供选择,也可以在系统中添加用户时标记为强制。 https://support.okta.com/help/s/article/How-to-create-dropdown-enumerated-custom-attributes-in-Okta?language=en_US
并将属性映射到 Okta 配置文件 - https://help.okta.com/en/prod/Content/Topics/users-groups-profiles/usgp-about-attribute-mappings.htm
希望这也有帮助。