当前位置: 首页 > 知识库问答 >
问题:

Spring Boot中的Keycloak管理客户端

钦海荣
2023-03-14
public Keycloak getKeycloakInstance() {
  var keycloak = KeycloakBuilder.builder()
   .serverUrl(SERVER_URL)
   .realm(REALM)
   .username(USERNAME)
   .password(PASSWORD)
   .clientId(CLIENT_ID)
   .build();
  return keycloak;
}
<dependency>
 <groupId>org.keycloak</groupId>
 <artifactId>keycloak-admin-client</artifactId>
 <version>10.0.0</version>
</dependency>

共有1个答案

章增
2023-03-14

@Zonaut在keycloak演讲中回答了问题。也许能帮上什么忙!

“就我个人而言,我会选择示例2,创建一个专用的服务帐户客户机,因为我们正在进行服务与服务之间的通信”。

示例1->使用用户

    null
    null
    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");
  • 在您想要的领域中创建新的客户端->keycloak-admin
  • 选择仅启用服务帐户的机密客户端
  • 选择选项卡服务帐户角色
    • 在客户端角色中键入realm-management
    • 添加所需的可用角色

    代码:

    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->使用管理帐户

    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");
    

 类似资料:
  • 我以前在其他项目中实现过类似的功能,但从未使用Quarkus作为底层实现框架。所以,我的猜测是与此有关。但我从没见过这样的错误。有人能给我一些关于如何绕过这个问题的见解吗?

  • 有人能为JBOSS 7.1的keycloak-admin-client提供工作的pom.xml吗? 多谢

  • 在https://KeyCloak.gitbooks.io/server-developer-guide/content/v/2.2/topics/admin-rest-api.html中使用CURL的示例适用于从其Docker映像运行KeyCloak。 为了实现应用程序的最终目标形状,我希望使用客户端ID和机密而不是用户名+密码进行身份验证。 该令牌会导致对admin REST API的调用出现

  • The AdminClient API supports managing and inspecting topics, brokers, acls, and other Kafka objects. To use the AdminClient API, add the following Maven dependency: <dependency>     <groupId>org.apac

  • 使用keycloak rest API创建以下内容。 试图为使用KeyCloak的应用程序编写完全自动化的CI解决方案。我在测试期间自动重新创建k8s中的keycloak服务器,以100%确保所有内容都是相同的。 目前使用KeyCloak5。 但是我无法将我的新用户分配给客户机-角色领域-管理中的所有角色。我试图阅读api文档,但我找不到如何执行该命令。