Spring Security 5 OAuth 2社交注销 [英] Spring Security 5 OAuth 2 Social Logout
本文介绍了Spring Security 5 OAuth 2社交注销的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经为我的Spring Boot MVC Web应用程序添加了社交登录功能。它允许用户使用GitHub、Facebook或Google帐户登录我的应用程序。但我正在努力使/注销功能正常工作。即使调用了/logout并加载了logoutSuccessUrl,如果用户再次单击登录链接,也不会再次要求用户提供他们的用户名或密码。看起来该用户仍经过身份验证。
你们如何使用新的Spring Security 5 OAuth 2客户端支持实现/注销?
我已使用新的OAuth 2客户端支持。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
spring.security.oauth2.client.registration.facebook.client-id =
spring.security.oauth2.client.registration.facebook.client-secret =
下面是我的HTTPSecurity配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.and()
.logout().logoutSuccessUrl("/");
}
我也尝试过这种方式:
@覆盖 受保护的空配置(HttpSecurity Http)引发异常{ Http
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers(HttpMethod.POST,"/logout").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.deleteCookies("JSESSIONID")
.logoutSuccessUrl("/").permitAll()
.and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
如何注销通过使用新的Spring Security OAuth 2客户端支持的Social OAuth 2登录提供商之一进行身份验证的用户?
推荐答案
我当前已在Chrome浏览器上登录到谷歌,并且可以查看我的Gmail等,因此我与谷歌的会话处于活动状态。 如果我访问您的Spring应用程序,并使用Google登录,您的Spring应用程序会将我重定向到Google身份验证服务器,该服务器会检测到我已经登录到Google,因此它只需要求我同意您的应用程序请求的范围,以及如果我同意向您的应用程序颁发访问令牌。 现在,如果我想注销你的应用程序,Spring Security将使你应用程序上的会话无效,但它无法控制我与谷歌打开的会话,事实上,我不想也从谷歌注销。 因此,如果您想再次访问第三方的登录屏幕,您需要转到他们的页面并注销。
这篇关于Spring Security 5 OAuth 2社交注销的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文