как получить токены JWT из API keycloak в приложении Springboot

Я новичок в Keycloak. Я начал использовать его как часть своего приложения для весенней загрузки.

Я расширил KeycloakWebSecurityConfigurerAdapter и переопределил методы, такие как configure, configureGloabl и т. Д., Чтобы иметь конкретную аутентификацию (см. Ниже фрагмент кода).

Мне интересно, есть ли возможность получить доступ к объекту токена JWT для получения дополнительных свойств. Также мне непонятно, как сделать токен недействительным после выхода пользователя из системы. В настоящее время, как только один пользователь вошел в систему, я не могу выйти из него, и токен JWT, кажется, остается все время.

protected void configure(HttpSecurity http) throws Exception {
    super.configure(http);
    http.authorizeRequests()
        .antMatchers("/customers*")
        .hasRole("user")
        .anyRequest()
        .permitAll();
}

person Zaks M    schedule 19.02.2018    source источник


Ответы (1)


вы можете получить токен доступа в почтальоне, используя это;

введите описание изображения здесь

здесь ConfigKeycloak - это имя области, а config-app - имя клиента.

Другой способ получить токен доступа - это.

 @RequestMapping(value = "/customers", method = RequestMethod.GET)
 @PreAuthorize("hasRole('ROLE_USER')")
 public String getCustomers(){
    KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) request.getUserPrincipal();
    KeycloakPrincipal principal=(KeycloakPrincipal)token.getPrincipal();
    KeycloakSecurityContext session = principal.getKeycloakSecurityContext();
    AccessToken accessToken = session.getToken();
    String a = principal.getName();
    username = accessToken.getPreferredUsername();
    emailID = accessToken.getEmail();
    lastname = accessToken.getFamilyName();
    firstname = accessToken.getGivenName();
    realmName = accessToken.getIssuer();
    AccessToken.Access realmAccess = accessToken.getRealmAccess();
    }

вы можете выйти из сеанса, используя это.

  @RequestMapping(value = "/logout", method = RequestMethod.GET)
  public String logout(HttpServletRequest request) throws ServletException {
    request.logout();
    return "/";
  }
person Rahul Baghaniya    schedule 03.08.2018