如何从Keycloak AuthzClient获得其他索赔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Keycloak AuthzClient获得其他索赔相关的知识,希望对你有一定的参考价值。

我使用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来包含我的来自portal的自定义属性。我在这里做错了什么?

答案

我没有找到任何关于keycloak authzclient的解决方案。但我使用jwt解码方案作为。https:/github.comauth0java-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()

以上是关于如何从Keycloak AuthzClient获得其他索赔的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java API 从 keycloak 获取用户的名字、姓氏和属性?

如何从 Keycloak REST API 获取用户?

如何在 KeyCloak 中获取复合角色

如何配置 Keycloak 并通过 REST API 完成所有步骤并获得 JWT?

Keycloak,如何保护不提供网页的 Spring Boot 后端?

除了 keycloak 令牌之外,我还需要其他任何东西来访问使用 keycloak 保护的服务吗?