Spring 为什么将sessioncreation策略设置为无状态会破坏我的oauth2应用程序

Spring 为什么将sessioncreation策略设置为无状态会破坏我的oauth2应用程序,spring,spring-security,spring-security-oauth2,Spring,Spring Security,Spring Security Oauth2,为什么将SessionCreationPolicy设置为STATELESS会中断oauth2登录? 在通过facebook认证后,该应用程序将进行一个永无止境的循环,最终导致“localhost将您重定向了太多次” 循环如下: 通过facebook验证并重定向到: 重定向Uri-//login/oauth2/code/facebook?code=&state= 返回facebook授权Uri-/oauth2/authorization/facebook 重复 这一切都发生在SessionCrea

为什么将
SessionCreationPolicy
设置为
STATELESS
会中断oauth2登录? 在通过facebook认证后,该应用程序将进行一个永无止境的循环,最终导致“localhost将您重定向了太多次”

循环如下:

  • 通过facebook验证并重定向到:
  • 重定向Uri-//login/oauth2/code/facebook?code=&state=
  • 返回facebook授权Uri-/oauth2/authorization/facebook
  • 重复

  • 这一切都发生在
    SessionCreationPolicy
    无状态的情况下。有人能向我解释一下为什么会发生这种情况吗?

    这是预期的行为。OAuth2客户端需要以某种方式存储令牌,以便在以后的请求中使用它们。通过使用无状态会话创建策略,每次调用应用程序时,它都找不到任何令牌(即,它不知道您已经在上一个请求中对自己进行了身份验证),因此它将再次触发身份验证流

    另一方面,OAuth2资源服务器可以是无状态的,因为它们不依赖于任何会话状态。从OAuth2客户端发送到OAuth2资源服务器的每个请求都在HTTP请求头中提供一个访问令牌(这是可能的,因为客户端将令牌存储在会话中)

    @Override
        protected void configure(HttpSecurity http) throws Exception {
            // TODO Auto-generated method stub
            http
                .sessionManagement()
                    .sessionCreationPolicy(SessionCreationPolicy.STATELESS);