如何使用Keycloak的Java Client获取用户的角色和属性?下面是我编写的用于获取用户的访问 token 的代码,但是,我无法找到获取分配给该用户的角色的方法。
Configuration configuration = new Configuration();
configuration.setRealm("foo");
configuration.setResource("foo");
configuration.setBearerOnly(Boolean.TRUE);
configuration.setAuthServerUrl("http://localhost:8080");
configuration.setCredentials(Map.of("secret", "FV3P4ajYHedAUDtOa55EX5nzK8zc6jUA"));
AuthzClient authzClient = AuthzClient.create(configuration);
AuthorizationRequest request = new AuthorizationRequest();
AuthorizationResponse authorize = authzClient.authorization("john.doe", "john.doe").authorize(request);
String token = authorize.getToken();
log.info("Auth bearer token is {}", token);
最佳答案
您将 token 作为字符串
,即:
String token = authorize.getToken();
现在您只需解析它即可获取领域和客户端角色,这些角色编码在 token 中。为此,您可以使用 class TokenVerifier来自org.keycloak.TokenVerifier
。
例如:
try {
AccessToken token = TokenVerifier.create(tokenString, AccessToken.class).getToken();
System.out.printf("Realm 'foo' = Roles %s%n", token.getRealmAccess().getRoles());
token.getResourceAccess().forEach((k, v) -> System.out.printf("Client '%s' = Roles '%s'%n", k, v.getRoles()));
} catch (VerificationException e) {
...
}
关于java - 如何获取Keycloak用户的角色和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73671590/