gpt4 book ai didi

spring - SAML异常 : InResponseToField of the Response doesn't correspond to sent message

转载 作者:行者123 更新时间:2023-12-02 09:14:22 24 4
gpt4 key购买 nike

我们正在开发一个应用程序,该应用程序受 Spring Security saml 保护。

身份验证工作正常,但在生产环境中以下工作流程存在一个问题。

  1. 用户请求未 protected 地址 www.server.com
  2. 响应是一个带有内联脚本的 html 页面,该脚本将 window.location.href 更改为 saml protected 页面(服务提供商)www.server.com/app/action?param1=value1&param2=value2
  3. spring saml 检测到需要身份验证并将用户重定向到 www.login-server.com 上的登录表单(身份提供商)
  4. 此时登录表单是向用户显示的第一个页面
  5. 用户将此登录页面添加为书签(包括此 http session 的 saml 相关网址参数)www.login-server.com/adfs/ls/?SAMLRequest=xxx&SigAlg=xxx&Signature=arGdsZwJtHzTDjQP1oYqbjNO
  6. 用户使用应用程序...
  7. 第二天,用户打开此书签并登录
  8. IdP 重定向到 SP,但所属的 http session 已过期

现在我们的应用程序中出现以下异常:

org.opensaml.common.SAMLException:响应的 InResponseToField 与发送的消息 arGdsZwJtHzTDjQP1oYqbjNO 不对应

有什么想法可以处理此工作流程,以便用户在成功登录后可以使用该应用程序吗?感谢您的回答!

最佳答案

我们通过对 spring saml 配置进行以下更改解决了问题:

  1. 在id为successRedirectHandler(org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler)的bean中,我们将defaultTargetUrl设置为我们应用程序的init-Action(包括所有请求参数)。如果 IdP 发起 SSO,将自动使用此 URL。
  2. 在 id 为 contextProvider (org.springframework.security.saml.context.SAMLContextProviderLB) 的 Bean 中,我们将 storageFactory 设置为 org.springframework.security.saml。 storage.EmptyStorageFactory。这将禁用 InResponseToField 的检查。

关于spring - SAML异常 : InResponseToField of the Response doesn't correspond to sent message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45206873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com