The client obtains keycloak token information
Inclusive: accessToken, refreshToken, idToken
pom.xml
keycloak-admin-client
Orquarkus-keycloak-admin-client
just choose any one.
Note :
The current version seems to have bugs:RESTEASY004635: Resteasy Client Proxy for : org.keycloak.admin.client.resource.RealmResource
<!-- Keycloak Admin REST Client -->
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<!-- 版本应保持与实际情况一致 -->
<version>22.0.1</version>
</dependency>
<!-- quarkus-keycloak-admin-client -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-keycloak-admin-client</artifactId>
<version>3.3.0</version>
</dependency>
Obtain the token information of ordinary users (Xxx.java)
String serverUrl = "http://localhost:8090/";
String realm = "realm-01";
String clientId = "web-client";
String clientSecret = "8MwGl8X9DfMkk0mmzTaGyZIuMWPIBfjc";
String username = "user-001";
String password = "1234";
Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl(serverUrl)
.realm(realm)
.clientId(clientId)
.clientSecret(clientSecret)
.username(username)
.password(password)
.grantType(OAuth2Constants.PASSWORD)
.scope(OAuth2Constants.SCOPE_OPENID)
.build();
AccessTokenResponse tokenResponse = keycloak.tokenManager().getAccessToken();
String accessToken = tokenResponse.getToken();
String idToken = tokenResponse.getIdToken();
String refreshToken = tokenResponse.getRefreshToken();
// Get user resource
RealmResource realmResource = keycloak.realm(realm);
UserResource userResource = realmResource.users().get("5962a29c-9a13-483e-9ad3-f2a57dbde9a9");
// Get user representation
UserRepresentation user = userResource.toRepresentation();
// Print user information
System.out.println("User ID: " + user.getId());
System.out.println("Username: " + user.getUsername());
System.out.println("Email: " + user.getEmail());
Obtaining higher-level permissions of Keycloak can control some advanced behaviors of Keycloak, such as clearing cache (Xxx.java)
String serverUrl = "http://localhost:8090/";
String adminUsername = "admin";
String adminPassword = "admin";
Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl(serverUrl)
.username(adminUsername)
.password(adminPassword)
// 使用 master realm
.realm("master")
// 使用内置的 admin-cli 客户端
.clientId("admin-cli")
.grantType(OAuth2Constants.PASSWORD)
.scope(OAuth2Constants.SCOPE_OPENID)
.build();
// 清除域下的用户缓存
keycloak.realm("realm-01").clearUserCache();