gpt4 book ai didi

spring-boot - Spring Boot 中的 Keycloak 管理客户端

转载 作者:行者123 更新时间:2023-12-05 01:36:52 24 4
gpt4 key购买 nike

我在 spring boot 中使用 keycloak-admin-client 时遇到了一些问题。

如果我尝试使用此代码,我会收到 401(未授权):

public Keycloak getKeycloakInstance() {
var keycloak = KeycloakBuilder.builder()
.serverUrl(SERVER_URL)
.realm(REALM)
.username(USERNAME)
.password(PASSWORD)
.clientId(CLIENT_ID)
.build();
return keycloak;
}

此外,如果我将 .resteasyClient(....).clientSecret(...) 放在上面的代码中,我会得到 badrequest。

在客户端角色中,我创建了一个新的复合角色并将所有领域管理角色赋予它,也许我配置有误?

我在哪里可以找到有关如何使用此管理客户端依赖项的一些文档?

<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>10.0.0</version>
</dependency>

最佳答案

keycloak discourse 中回答了问题通过@zonaut。也许它对某人有帮助!

“我个人会选择示例 2,在我们进行服务间通信时创建专用服务帐户客户端”。

示例 1 -> 使用用户

  1. 在您想要的领域下创建新客户端 -> keycloak-admin
  2. 选择仅启用直接访问授权的公共(public)客户端
  3. 创建新角色,启用复合角色
    • 在复合角色下的客户端角色中键入领域管理
    • 添加您需要的可用角色
  4. 选择一个用户并打开角色映射选项卡
    • 在客户端角色中输入 keycloak-admin 并添加所需的角色

代码:

    Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl("http://localhost:8080/auth")
.grantType(OAuth2Constants.PASSWORD)
.realm("realm-name")
.clientId("keycloak-admin")
.username("username")
.password("password")
.resteasyClient(
new ResteasyClientBuilder()
.connectionPoolSize(10).build()
).build();

keycloak.tokenManager().getAccessToken();
RealmResource realmResource = keycloak.realm("realm-name");

示例 2 -> 使用 secret 服务帐户

  1. 在您想要的领域下创建新客户端 -> keycloak-admin
  2. 选择仅启用服务帐户的 secret 客户端
  3. 选择选项卡服务帐户角色
    • 在客户端角色中输入领域管理
    • 添加您需要的可用角色

代码:

Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl("http://localhost:8080/auth")
.grantType(OAuth2Constants.CLIENT_CREDENTIALS)
.realm("realm-name")
.clientId("keycloak-admin")
.clientSecret("1c7e2815-c4dc-401c-af2f-ebddad3b4a79")
.resteasyClient(
new ResteasyClientBuilder()
.connectionPoolSize(10).build()
).build();

keycloak.tokenManager().getAccessToken();
RealmResource realmResource = keycloak.realm("realm-name");

示例 3 -> 使用管理员帐户

您还可以使用具有密码授权的管理员用户,并使用现有的 admin-cli 客户端。

Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl("http://localhost:8080/auth")
.grantType(OAuth2Constants.PASSWORD)
.realm("master")
.clientId("admin-cli")
.username("admin")
.password("password")
.resteasyClient(
new ResteasyClientBuilder()
.connectionPoolSize(10).build()
).build();

keycloak.tokenManager().getAccessToken();
RealmResource realmResource = keycloak.realm("realm-name");

关于spring-boot - Spring Boot 中的 Keycloak 管理客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61642419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com