Keycloak 领域角色映射:继承角色和默认角色

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

因此,我使用 Keycloak 对我的项目的名为 QMS 的微服务进行身份验证和授权。 我目前有 3 个角色:

  • default-roles-qms
    - 自动创建,无法删除或编辑
  • manager
  • developer

manager
developer
是微不足道的,是我创建的。

我有 2 个用户:Tom(

manager
) 和 Dick(
developer
)。

现在我有两个问题和一个担忧:

问题1:这到底是什么

default-roles-qms
?为什么我不能将另一个角色设置为默认角色或编辑此角色?为什么我需要这个预定义的默认角色而不需要其他角色?

问题 2:如果我删除用户的

default-roles-qms
映射,他们的 OIDC 令牌不会带来
aud: account
属性以及我授权所需的
resource_access
对象。 获取 OIDC 令牌的 URL =>
"http://{host}:{port}/auth/realms/QMS/protocol/openid-connect/token"

问题:在添加用户时,一个非默认角色(即管理员)会间歇性地被继承,这并不是有意的,并且会出现在开发人员的角色映射中,如图所示。 附:在这张图片中,我特意添加了经理角色以显示它出现的位置,因为该事件是间歇性的。

有人可以帮忙解决这些吗?

Wrongly inherited role for a user

我尝试的所有步骤都如上。

我的期望: 我应该能够将角色设置为默认角色,即

developer
。但这并不是一个令人担忧的问题。 主要关注的是,除了默认角色之外,新用户不应继承其他角色。

我很乐意提供更多详细信息以防万一。

authentication authorization keycloak
1个回答
0
投票

问题 1:这个 default-roles-qms 到底是什么?为什么我不能将另一个角色设置为默认角色或编辑此角色?为什么我需要这个预定义的默认角色而不需要其他角色?

Keycloak 使用“default-roles-{realm_name}”来管理领域中的默认角色。它是一个复合角色,因此您可以为其分配其他角色。默认情况下,组成“default-roles-qms”的所有角色都会分配给每个领域用户。

将某些角色设为默认:

  • 在管理面板中选择“领域角色”->“default-roles-qms”
  • 按“分配角色”按钮并选择您要设为默认的角色。

问题 2:如果我删除用户的 default-roles-qms 映射,他们的 OIDC 令牌不会带来 aud: account 属性以及我授权所需的 resources_access 对象。获取 OIDC 令牌的 URL => "http://{host}:{port}/auth/realms/QMS/protocol/openid-connect/token"

当你打开“default-roles-qms”时,你会发现它附加了一些角色。这些角色由 Keycloak 本身使用,以便正常运行。因此,当您删除映射时,您就禁用了一些 Keycloak 功能。

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