HttpSessionStorage - 在 SESSION 中找不到消息

HttpSessionStorage - Message not found in SESSION

我能够使用 Spring 安全 SAML 单点登录 集成到我的网络应用程序中。但是我在添加此依赖项时遇到问题 org.springframework.session.

首先它将数据存储到会话中,然后重定向到 IDP。

DEBUG o.s.s.s.storage.HttpSessionStorage - Storing message a4850861j4f289ha850h8gh92hj85d to session c5a13884-37d5-4e3d-b5ec-44ac6013de7a

认证成功后,由于id改变,无法从SESSION中找到存储的数据。

DEBUG o.s.s.s.storage.HttpSessionStorage - Message a4850861j4f289ha850h8gh92hj85d not found in session 6c84d9a8-2c78-4e3b-8726-4f8129e9a543
DEBUG o.s.s.s.SAMLAuthenticationProvider - Error validating SAML message
org.opensaml.common.SAMLException: InResponseToField of the Response doesn't correspond to sent message a4850861j4f289ha850h8gh92hj85d

会话名称 "mujinaSpSessionId" 的创建在添加依赖项时被覆盖。

@Bean
  public ServletContextInitializer servletContextInitializer() {
    //otherwise the two localhost instances override each other session
    return servletContext -> {
      SessionCookieConfig sessionCookieConfig = servletContext.getSessionCookieConfig();
      sessionCookieConfig.setName("mujinaSpSessionId");
      sessionCookieConfig.setSecure(this.secureCookie);
      sessionCookieConfig.setHttpOnly(true);
    };
  }

作为参考,我遵循了 Mujina 的实现,这里是代码 WebSecurityConfigurer.java.

的 link

任何答案都会有所帮助,谢谢!

所以在搜索了一些答案之后,我找到了这个问题的答案 Spring SAML sending wrong AuthNRequest

主要问题来自 SAMLContextProviderLB 它与 Spring 会话冲突。

这行代码对我有用。

samlContextProviderLB.setStorageFactory(new EmptyStorageFactory());