Как выйти из системы, если мы используем @EnableAuthorizationServer? - PullRequest
0 голосов
/ 27 мая 2019

I Следуя этому руководству:

https://spring.io/guides/tutorials/spring-boot-oauth2/

Я создал собственное приложение, которое использует MitreID Connect и аутентификацию Google с Oauth2.

У меня проблема с выходом из системы как с Google, так и с MitreID, но давайте сосредоточимся на стороне Google. Как выйти из него?

Вы можете увидеть / скачать код с Github: 1) Клиент

https://github.com/Mazzotta13/ClientApplicationForOauth2AndMitre.git

2) Сервер аутентификации

https://github.com/Mazzotta13/MitreIDAndOAuth2.git

На самом деле я понятия не имею. Я пробовал разные вещи, такие как: использование выхода из клиента successUrl, связанного с сервером авторизации. Клиент:

@Override
protected void configure(HttpSecurity http) throws Exception {
    // @formatter:off
    http.antMatcher("/**").authorizeRequests().antMatchers("/webjars/**","/test").permitAll()
    .anyRequest().authenticated()
    .and()
        .logout()
//          .addLogoutHandler(new MyLogoutHandler())
        .logoutSuccessUrl("http://localhost:8081/exit");
    // @formatter:on
}

Сервер проверки подлинности контроллера:

@RequestMapping("/exit")
public void exit(HttpServletRequest request, HttpServletResponse response) {
    // token can be revoked here if needed
    new SecurityContextLogoutHandler().logout(request, null, null);
    try {
        //sending back to client app
        response.sendRedirect(request.getHeader("referer"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Проблема может быть в xhr-токене, который я не знаю, как удалить.

изменить 1.

Чтобы удалить токен, я попробовал это на клиентском контроллере:

@RequestMapping("/logout")
  public String logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, URISyntaxException {
  SecurityContextHolder.getContext().setAuthentication(null);
  request.logout();  
  SecurityContextHolder.clearContext();

  HttpSession session = request.getSession(false);
  if (session != null) {
      session.invalidate();
  }
  CookieClearingLogoutHandler cookieClearingLogoutHandler = new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY);
  SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
  cookieClearingLogoutHandler.logout(request, response, null);
  securityContextLogoutHandler.logout(request, response, null);
  SecurityContextHolder.getContext().setAuthentication(null);
  return "You have been logout";

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...