如何获取Keycloak访问令牌并将其存储在db中以进行春季引导?

时间:2019-10-08 12:04:05

标签: mysql spring-boot access-token keycloak

我想先获取访问令牌并将登录期间由keycloak生成的访问令牌存储在我的数据库中。我正在使用弹簧靴。

这是我尝试获取访问令牌的代码。但是结果什么都没有。...有更好的解决方案吗? ..

@RequestMapping(value = "/login", method = RequestMethod.GET)

public String getCustomers()
 {
HttpServletRequest request =((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
                .getRequest();
        KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) request.getUserPrincipal();
        KeycloakPrincipal principal = (KeycloakPrincipal) token.getPrincipal();
        KeycloakSecurityContext session = principal.getKeycloakSecurityContext();
        AccessToken accessToken = session.getToken();
        String a = principal.getName();
        String username = accessToken.getPreferredUsername();
        String realmName = accessToken.getIssuer();
        AccessToken.Access realmAccess = accessToken.getRealmAccess();
        String s = session.getToken().toString();
        System.out.println(s);
        return realmName;
..  }

我希望获得keycloak生成的访问令牌并将其存储在db中。

@KeycloakConfiguration class SecurityConfig extends
  KeycloakWebSecurityConfigurerAdapter {
 /**
     * Registers the KeycloakAuthenticationProvider with the authentication manager.
     */


  @Autowired public void configureGlobal(AuthenticationManagerBuilder auth)
  throws Exception { KeycloakAuthenticationProvider
  keycloakAuthenticationProvider=keycloakAuthenticationProvider();
  keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new
  SimpleAuthorityMapper());
  auth.authenticationProvider(keycloakAuthenticationProvider); }

 /**
     * Defines the session authentication strategy.
     */
          @Bean

          @Override protected SessionAuthenticationStrategy
          sessionAuthenticationStrategy() { return new
          RegisterSessionAuthenticationStrategy(new SessionRegistryImpl()); }

          @Bean public KeycloakConfigResolver keycloakConfigResolver() { return new
          KeycloakSpringBootConfigResolver(); }

          @Override protected void configure(HttpSecurity http) throws Exception {
          super.configure(http); http .authorizeRequests()
          .antMatchers("/login*").hasRole("springrole") .anyRequest().permitAll(); } }
this is my keycloak configuration..

1 个答案:

答案 0 :(得分:0)

您需要登录到keycloak,我看到您只是调用自定义“ / login”,并期望keycloak主体。