【问题标题】:Why does setting sessioncreation policy to stateless break my oauth2 app为什么将会话创建策略设置为无状态会破坏我的 oauth2 应用程序
【发布时间】:2023-03-24 20:10:01
【问题描述】:
@Override
    protected void configure(HttpSecurity http) throws Exception {
        // TODO Auto-generated method stub
        http
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

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

循环是这样的:

  1. 通过 facebook 进行身份验证并重定向到:
  2. 重定向-Uri - //login/oauth2/code/facebook?code=&state=
  3. 返回 facebook 授权-Uri - /oauth2/authorization/facebook
  4. 重复

这一切都发生在 SessionCreationPolicySTATELESS 的情况下。有人可以向我解释为什么会这样吗?

【问题讨论】:

    标签: spring spring-security spring-security-oauth2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 2011-05-06
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多