Wal*_*lly 4 spring-boot keycloak
我\xe2\x80\x99m 在 Spring Boot 中使用 keycloak-admin-client 时遇到一些问题。
\n\n如果我尝试使用此代码,我会收到 401(未经授权):
\n\npublic Keycloak getKeycloakInstance() {\n var keycloak = KeycloakBuilder.builder()\n .serverUrl(SERVER_URL)\n .realm(REALM)\n .username(USERNAME)\n .password(PASSWORD)\n .clientId(CLIENT_ID)\n .build();\n return keycloak;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n另外,如果我在上面的代码中放入.resteasyClient(....)and ,我会得到 badrequest 。.clientSecret(...)
在客户端角色中,我创建了一个新的复合角色,并将所有领域管理角色赋予它,也许我配置有误?
\n\n在哪里可以找到有关如何使用此管理客户端依赖项的文档?
\n\n<dependency>\n <groupId>org.keycloak</groupId>\n <artifactId>keycloak-admin-client</artifactId>\n <version>10.0.0</version>\n</dependency>\nRun Code Online (Sandbox Code Playgroud)\n
@zonaut在keycloak 讨论中回答了问题。也许它对某人有帮助!
“我个人会选择示例 2,在我们进行服务间通信时创建专用服务帐户客户端”。
示例 1 -> 使用用户
代码:
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");
Run Code Online (Sandbox Code Playgroud)
示例 2 -> 使用机密服务帐户
代码:
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");
Run Code Online (Sandbox Code Playgroud)
示例 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");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8870 次 |
| 最近记录: |