【问题标题】:How can I get a user's first, last name, and attribute from keycloak with the Java API?如何使用 Java API 从 keycloak 获取用户的名字、姓氏和属性?
【发布时间】:2019-02-16 04:31:09
【问题描述】:

在给定用户和密码的情况下,我可以使用 Java API 代码从 keycloak 获取令牌:

 AccessTokenResponse tokenresponse = authzClient.obtainAccessToken(user, password);

如何从 Keycloak 中获取该用户的名字、姓氏以及其他属性?比如身份证?

【问题讨论】:

  • this 呢?
  • 非常感谢您的链接!这些是 REST 调用吗?
  • 我希望这些类的名称如此。至少其中一些应该是。
  • 有没有不依赖 REST 的直接方法?
  • 什么是“直接”方式?您的用户数据是否存储在本地?如果是,为什么要依赖 keycloak 而不仅仅是查询数据存储区?

标签: java keycloak


【解决方案1】:

我使用的代码只是从AccessToken 获取信息。这取自 JAX-RS 服务,但不清楚您是如何尝试访问它的。也许它仍然可以给你一些想法。

@Path("/something")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response aMethod(@Context SecurityContext securityContext) {
    Principal principal = securityContext.getUserPrincipal();

    KeycloakPrincipal<KeycloakSecurityContext> keycloakPrincipal = (KeycloakPrincipal<KeycloakSecurityContext>) principal;

    AccessToken accessToken = keycloakPrincipal.getKeycloakSecurityContext().getToken();

    // first name
    accessToken.getGivenName()
    // last name
    accessToken.getFamilyName();
    // email
    accessToken.getEmail();
    // roles
    accessToken.getRealmAccess().getRoles();

【讨论】:

  • 您使用的是哪个 AccessToken?我正在使用 org.keycloak.representations.AccessTokenResponse 并且它没有像您正在使用的方法,并且令牌本身只是一个字符串。
  • 当然,你的想法是有道理的!如果可以的话,我想这样做。
  • 很抱歉 - 我已经更新了帖子,提供了更多信息。
猜你喜欢
  • 2016-08-01
  • 2021-01-16
  • 2019-01-06
  • 1970-01-01
  • 2020-02-15
  • 2012-04-29
  • 1970-01-01
  • 2023-02-02
  • 2011-05-18
相关资源
最近更新 更多