哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?

Posted

技术标签:

【中文标题】哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?【英文标题】:Which roles enable a user in a Keycloak Realm to use the Admin-REST-API? 【发布时间】:2021-12-12 19:09:49 【问题描述】:

非主域中的用户需要哪些角色/配置才能有效使用 Keycloak 15 Admin REST API?

我们已成功使用在领域管理客户端中分配了领域管理员角色的帐户来获取 admin-cli 客户端的令牌。

这仍然有效。

我不记得有多久了,但是在从 KC 14 迁移到 KC 15 之后,我们现在在尝试调用管理 cli 端点时遇到 403 错误,例如:

/auth/admin/realms/$realm/users/$userID/role-mappings/clients/$appClientUUID
/auth/admin/realms/$realm/users/$userid

等等

如果它会抛出 401,我会知道这至少是一个凭证问题,但令牌端点确实推出了一个访问令牌:


  "alg": "RS256",
  "typ": "JWT",
  "kid": "kid"
.
  "exp": 1635328475,
  "iat": 1635328175,
  "jti": "b621421d-ad69-4ddf-bedb-2c0d5da360cd",
  "iss": "keycloak URL",
  "sub": "subvalue",
  "typ": "Bearer",
  "azp": "admin-cli",
  "session_state": "uuid",
  "acr": "1",
  "scope": "openid email profile",
  "sid": "986dce48-2ef2-49e5-9152-4e54396ff2a4",
  "email_verified": true,
  "name": "-",
  "preferred_username": "-",
  "given_name": "-",
  "family_name": "-",
  "email": "-"
.[Signature]

令我惊讶的是令牌中似乎没有包含任何角色。

有没有人知道关于 Admin Rest API 的 KC 15 可能出了什么问题/配置错误?

【问题讨论】:

请仔细检查您的用户在您尝试通过 REST API 访问的领域中是否确实具有realm-management 客户端的realm-admin 角色。我只是加倍检查了 15.0.2 版一切正常。 Keycloak 知道用户从其数据库中拥有哪些角色。在这种情况下,无需将它们编码到令牌中。 我再次检查了一遍,我们尝试验证的用户确实具有分配给它的realm-admin 角色。 doh 感谢您的帮助。我应该仔细检查我使用的协议。有时会发生这些错误...... 【参考方案1】:

原来这里唯一的问题是我在发出请求时指定的协议。有时会发生小学生错误。

对于那些在谷歌上搜索相同内容的人:检查您的用户是否在分配的客户端realm-management 中具有realm-admin 的角色。其他一切都由 Keycloak 在内部处理。

【讨论】:

以上是关于哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?的主要内容,如果未能解决你的问题,请参考以下文章

何时在 Keycloak 中使用领域角色?

Keycloak 列出 SPA 中的所有领域

将领域角色和资源角色与 Keycloak/Spring Security 一起使用

keycloak,用户注册。如何添加角色?

Keycloak-向用户配置文件中添加角色

Keycloak:用户基于角色的客户端登录访问限制