如何使用 Java API 从 keycloak 获取用户的名字、姓氏和属性?
Posted
技术标签:
【中文标题】如何使用 Java API 从 keycloak 获取用户的名字、姓氏和属性?【英文标题】:How can I get a user's first, last name, and attribute from keycloak with the Java API? 【发布时间】:2019-02-16 04:31:09 【问题描述】:在给定用户和密码的情况下,我可以使用 Java API 代码从 keycloak 获取令牌:
AccessTokenResponse tokenresponse = authzClient.obtainAccessToken(user, password);
如何从 Keycloak 中获取该用户的名字、姓氏以及其他属性?比如身份证?
【问题讨论】:
this 呢? 非常感谢您的链接!这些是 REST 调用吗? 我希望这些类的名称如此。至少其中一些应该是。 有没有不依赖 REST 的直接方法? 什么是“直接”方式?您的用户数据是否存储在本地?如果是,为什么要依赖 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 并且它没有像您正在使用的方法,并且令牌本身只是一个字符串。 当然,你的想法是有道理的!如果可以的话,我想这样做。 很抱歉 - 我已经更新了帖子,提供了更多信息。以上是关于如何使用 Java API 从 keycloak 获取用户的名字、姓氏和属性?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 java api 在 keycloak 中设置自定义用户属性
如何通过 Keycloak Java API 根据资源类型发出授权请求?
如何使用 httppost/rest-api 从 keycloak 获取用户列表