spring-mvc - 如何在 Spring 启动时使用keycloak获取userinfo?

标签 spring-mvc spring-boot spring-security keycloak keycloak-services

我可以通过使用以下方式获取用户名:

@Autowired
 private HttpServletRequest request;
 Principal user = request.getUserPrincipal();
 mqMessage.setUserName(user.getName());

但是我想获得登录用户的名字和姓氏。
我怎么能得到ff。使用SpringBoot keycloak适配器的userinfo?

最佳答案

        KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) request.getUserPrincipal();        
        KeycloakPrincipal principal=(KeycloakPrincipal)token.getPrincipal();
        KeycloakSecurityContext session = principal.getKeycloakSecurityContext();
        AccessToken accessToken = session.getToken();
        username = accessToken.getPreferredUsername();
        emailID = accessToken.getEmail();
        lastname = accessToken.getFamilyName();
        firstname = accessToken.getGivenName();
        realmName = accessToken.getIssuer();            
        Access realmAccess = accessToken.getRealmAccess();
        roles = realmAccess.getRoles();

您可以使用上面的代码片段来获取名字和姓氏
这是来自 2.4.0

关于spring-mvc - 如何在 Spring 启动时使用keycloak获取userinfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105290/

相关文章:

java - Spring MVC 在 Google AppEngine 中初始化两次

spring-mvc - 更新表格 : Spring mvc + thymeleaf

java - Spring Boot fat jar 中出现 NoClassDefFoundError 但依赖项位于已编译的存档中,并且应用程序在 IDE 中运行良好

java - 哪个 Spring Boot @ConfigurationProperties 注释 bean 拥有 spring.profiles.active 属性?

java - Spring java.lang.NoSuchMethodError : org. springframework.web.accept.PathExtensionContentNegotiationStrategy.getMediaTypes()Ljava/util/Map;

spring-security - 更改 Spring Security 配置

jakarta-ee - 为什么、何时以及在何种情况下,我们应该在 spring mvc 中使用多个 servlet 而不是单个 servlet?

java - Spring MVC JPA 惰性异常

java - 使用 spring-boot gradle-plugin 构建的可执行 jar 缺少依赖项

grails - 使用Spring Security的 “Remember Me”选项时登录时出错