我需要授权我的应用程序(从现在起名为“Logic”)管理 Keycloak 领域的用户。“Logic”已使用客户端凭据授予访问类型针对该领域进行了身份验证,因此代码已开始运行。
现在,在 Keycloak 管理控制台中,我需要向我的客户端添加正确的角色,以便“Logic”被授权调用 Keycloak 提供的任何 API 端点来管理领域用户。
在领域客户端列表中,有一个名为 的客户端realm-management
,Keycloak 默认为每个领域提供该客户端。此客户端可以管理整个领域,而不仅仅是其用户,因此它有一个客户端角色列表。manage-users
是该列表中的角色之一,也是我需要分配给我的其他客户端(我logic
在 Keycloak 中命名的)的角色。换句话说,我的“Logic”应用程序使用 keycloak 客户端 IDlogic
来验证自身,我需要将manage-users
角色添加到logic
客户端。
问题是,在我的客户端(logic
)角色设置中,客户端下列出的相同角色realm-management
根本没有列出,并且列表只有uma_protection
角色:
如果我在搜索框中输入“manage-users”进行搜索,则不会显示。同时,如果我在客户端的角色列表中单击该角色realm-management
,则显示没有用户有这个角色,它允许我添加角色到用户,但不是客户,即使该角色实际上列在客户(realm-management
)。
logic
在我的客户端中创建一个与 同名的新角色manage-users
是可能的,但我不确定这是可行的方法。我的意思是,我为什么要复制现有角色?这听起来有点不对劲。
你能告诉我将角色添加manage-users
到客户在 Keycloak 23 中?
答案1
我终于得到了答案来自 Keycloak 官方支持社区的一名成员,我在这里报告,以防其他人在这里发现我的问题。
dasniko 写道:
如果您的客户端已经使用客户端凭据流程,则它已启用“服务帐户”。您必须分配在客户端的相应选项卡中将角色
realm-management.manage-users
分配给服务帐户。这样,在 Keycloak 中负责使客户端凭据流正常工作的相应服务帐户用户将获得适当的角色,并且应该能够管理您的用户。
可以通过选择“按客户端过滤”而不是“按领域角色过滤”来找到角色