如何从Keycloak AuthzClient获得其他声明

时间:2020-04-09 12:20:44

标签: java keycloak

我正在使用AuthzClient使用以下代码获取访问令牌:

Map<String,Object> clientCredentials = new HashMap<>();
clientCredentials.put("secret", keycloakClientSecret);

Configuration configuration = new Configuration(
        keycloakUrl, keycloakRealmName, keycloakClientId, clientCredentials, null
);

AuthzClient authzClient = AuthzClient.create(configuration);
AccessTokenResponse accessTokenResponse = authzClient.obtainAccessToken(
        loginRequest.getUsername(), loginRequest.getPassword()
);

System.out.println(accessTokenResponse.getOtherClaims());

我成功获取了访问令牌和刷新令牌,但是我没有其他要求。它是空的。

我已将Mapper配置为包括来自门户的我的定制属性。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我没有找到有关keycloak authzclient的任何解决方案。但是我正在将jwt解码解决方案用作https://github.com/auth0/java-jwt

我的带有jwt-decoder的示例:

public Claim getClaimByName(String key)
    {
        try {
            DecodedJWT jwt = JWT.decode(this.tokenResponse.getAccessToken()); // just token as String
            return jwt.getClaim(key);
        } catch (JWTCreationException exception){
         return null;
        }
    }
getClaimByName("site").asString()