繁体   English   中英

如何获取 Keycloak 用户的角色和属性

[英]How to get the Roles and Attributes of a Keycloak User

如何使用 Keycloak 的 Java 客户端获取用户的角色和属性? 下面是我为获取用户的访问令牌而编写的代码,但是,我无法找到获取分配给该用户的角色的方法。

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

您将令牌作为String ,即:

String token = authorize.getToken();

现在您只需要解析它以获取编码在令牌中的 Realm 和客户端角色。 为此,您可以使用org.keycloak.TokenVerifier 中的 class 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) {
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM