Keycloak 创建客户端

时间:2021-03-24 19:51:12

标签: java jboss keycloak keycloak-services

我正在尝试使用 keycloak-admin-client 创建一个新的 Keycloak 客户端。

这是我的代码:

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

        ClientRepresentation clientRep = new ClientRepresentation();
        clientRep.setClientId(clientId);
        clientRep.setSecret(UUID.randomUUID().toString());
        clientRep.setProtocol("openid-connect");

        keycloak.realm("realm-name").clients().create("test-client");

执行此操作时,我收到一个未经授权的错误 (javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized),但我知道我的管理员密码是正确的。

我的用例是我使用主 Keycloak 管理员。我需要能够仅使用客户端 API 而无需任何手动步骤来设置领域、客户端和用户(以及一些配置)。为了 Dockerized CI/CD 构建,我需要设置一个完全自动化的 Keycloak 设置。

值得注意的是,我不需要将其作为安全的策略。我只是想编写一些代码,我可以使用这些代码为某些测试自动设置 Dockerize Keycloak 实例。

1 个答案:

答案 0 :(得分:2)

在这部分:

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

使用 .realm("realm-name") 代替 .realm("master")

相关问题