如何从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 完成所有步骤并获得 JWT?