Я разрабатываю веб-приложение со Spring Boot, используя Azure AD и OAuth2.0 для аутентификации для обеспечения безопасности бэкенда.
Если я выйду из системы, например, через Outlook Web App, мое веб-приложениеследует зарегистрировать этот процесс и выйти из системы (по крайней мере, если я перезагрузлю или снова открою страницу).Как мне это реализовать?Теперь веб-приложение выглядит как еще вошедшее в систему. К сожалению, я не нашел подходов для последовательной реализации этого поведения.Только если я использую самореализованную кнопку выхода из системы, она показывает желаемый эффект, и HttpSession становится недействительным, а файлы cookie удаляются.
Я уже реализовал вход и выход из системы через Azure AD в моем веб-приложении (см код).Как только я выхожу через кнопку собственного приложения, я автоматически выхожу из других приложений Azure (например, Outlook Web App), для которых требуется единый вход Azure.
Я уже попробовал аннотацию @PreAuthorize
, описанную здесь Spring MVC - Проверка, если пользователь уже вошел в систему через Spring Security? , но, похоже, это не решение.
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login()
.userInfoEndpoint()
.oidcUserService(oidcUserService);
http.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID")
.clearAuthentication(true)
.logoutSuccessUrl("https://login.microsoftonline.com/common/oauth2/logout");
}
Перенаправление на главную страницу:
@GetMapping("login/oauth2/code/azure")
public ModelAndView redirectToRoot(ModelMap modelMap) {
return new ModelAndView("redirect:/", modelMap);
}