spring-boot - 是否可以在没有管理员凭据的情况下创建 key 斗篷用户?

标签 spring-boot keycloak keycloak-rest-api

我有一个 spring boot 应用程序,它使用 keycloak 进行用户管理。但是 keycloak 实例是生产实例,我没有管理员凭据。我关注 keycloak 领域信息。

#Keycloak settings
keycloak.auth-server-url=https://myapp.com/auth/
keycloak.realm=project-realm
keycloak.resource=project-client
keycloak.credentials.secret=secret
keycloak.use-resource-role-mappings=true
keycloak.bearer-only=true
keycloak.ssl-required=external
auth.token.url=https://myapp.com/auth/realms/my-realm/protocol/openid-connect/token
auth.grant.type=client_credentials

当我尝试使用 keycloak rest api 执行用户管理操作时,我收到了 403 Forbidden 响应。此处授权 token 是使用上述领域凭据生成的。

method: POST 
url:https://myapp.com/auth/realms/project-realm/protocol/openid-connect/token
contentType: application/x-www-form-urlencoded
body:
client_id: project-client
grant_type: client_credentials
client_secret: secret 

但是当我使用本地 key 斗篷实例并使用管理员凭据生成授权 token 时,这工作正常。

method: POST 
url:http://localhost:8180/auth/realms/master/protocol/openid-connect/token
contentType: application/x-www-form-urlencoded
body:
client_id: admin-cli
grant_type: password
username: admin
password: admin

我需要知道的是,我是否需要管理员凭据(用户名、密码)才能使用 Keycloak rest api 执行这些用户管理操作?还是我做错了什么?

最佳答案

When I try do perform user management operations using keycloak rest api I get 403 Forbidden response. Here the authorization token is generated using above realm credentials.

这是因为

method: POST 
url:https://myapp.com/auth/realms/project-realm/protocol/openid-connect/token
contentType: application/x-www-form-urlencoded
body:
client_id: project-client
grant_type: client_credentials
client_secret: secret 

您的客户端 project-client 没有适当的管理相关角色来执行 Admin Rest API 调用。

What I need to know is do I need admin credentials (username, password) to perform these user management operation using keyclaok rest api? Or am I doing something wrong?

没有。您可以与其他用户或客户一起执行这些相同的任务,只要他们具有适当的角色即可。要解决您的问题,您可以执行以下操作:

  • 转到客户端project-client所在的领域;
  • 转到客户端并选择客户端 project-client
  • 切换到标签Service Account Roles
  • Client Roles 下拉菜单中选择 realm-management
  • 相应地选择和分配角色:

enter image description here

关于spring-boot - 是否可以在没有管理员凭据的情况下创建 key 斗篷用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67224388/

相关文章:

java - Spring :没有@Component 的@Autowired

java - OpenShift 构建错误 : Unable to import child module class in parent module of multi module Maven Spring boot project

spring boot ssl 客户端证书因 PKIX 路径构建失败错误而失败

single-sign-on - 如何使用 SAML ECP 配置文件配置 Keycloak

keycloak - 哪些角色使 Keycloak 领域中的用户能够使用 Admin-REST-API?

java - 无法在 Controller Spring-boot 中测试需要身份验证的方法

Keycloak - 要求用户在电子邮件验证后设置密码

Keycloak - 使用 Rest API 验证用户的电子邮件

keycloak-rest-api - key 斗篷 API :- Identify Users Realm for login

php - keycloak-传递参数满足密码策略要求