Spring boot Spring Boot中的KeyClope管理客户端

Spring boot Spring Boot中的KeyClope管理客户端,spring-boot,keycloak,Spring Boot,Keycloak,在spring boot中使用KeyClope管理客户端时遇到一些问题 如果我尝试使用此代码,会得到401个未经授权的密码: public Keycloak getKeycloakInstance() { var keycloak = KeycloakBuilder.builder() .serverUrl(SERVER_URL) .realm(REALM) .username(USERNAME) .password(PASSWORD) .clientId(CL

在spring boot中使用KeyClope管理客户端时遇到一些问题

如果我尝试使用此代码,会得到401个未经授权的密码:

public Keycloak getKeycloakInstance() {
  var keycloak = KeycloakBuilder.builder()
   .serverUrl(SERVER_URL)
   .realm(REALM)
   .username(USERNAME)
   .password(PASSWORD)
   .clientId(CLIENT_ID)
   .build();
  return keycloak;
}
还有,如果我把.resteasyClient。。。。还有,客户秘密。。。在上面的代码中,我得到了一个错误的请求

在客户端角色中,我创建了一个新的复合角色,并将所有领域管理角色都分配给它,也许我配置了一些错误的东西

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

<dependency>
 <groupId>org.keycloak</groupId>
 <artifactId>keycloak-admin-client</artifactId>
 <version>10.0.0</version>
</dependency>
问题由@zonaut回答。也许这对某人有帮助

就我个人而言,我会选择示例2,在我们进行服务对服务的通信时创建一个专用的服务帐户客户端

示例1->使用用户

在您想要的领域->Keyclope admin下创建新客户端 选择仅启用直接访问授权的公共客户端 创建新角色,启用复合角色 在复合角色下的客户端角色中键入领域管理 添加所需的可用角色 选择一个用户并打开“角色映射”选项卡 在客户端角色中键入keydape admin并添加所需的角色 代码:

示例2->使用机密服务帐户

在您想要的领域->Keyclope admin下创建新客户端 选择仅启用服务帐户的机密客户端 选择选项卡服务帐户角色 在客户端角色中键入领域管理 添加所需的可用角色 代码:

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

您还可以将admin用户与密码授权一起使用,并使用现有的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");
问题由@zonaut回答。也许这对某人有帮助

就我个人而言,我会选择示例2,在我们进行服务对服务的通信时创建一个专用的服务帐户客户端

示例1->使用用户

在您想要的领域->Keyclope admin下创建新客户端 选择仅启用直接访问授权的公共客户端 创建新角色,启用复合角色 在复合角色下的客户端角色中键入领域管理 添加所需的可用角色 选择一个用户并打开“角色映射”选项卡 在客户端角色中键入keydape admin并添加所需的角色 代码:

示例2->使用机密服务帐户

在您想要的领域->Keyclope admin下创建新客户端 选择仅启用服务帐户的机密客户端 选择选项卡服务帐户角色 在客户端角色中键入领域管理 添加所需的可用角色 代码:

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

您还可以将admin用户与密码授权一起使用,并使用现有的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");
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");