我们正在开发一款应用程序,该程序受到Spring Security SAML的保护。
认证工作正常,但在生产环境下,以下工作流程存在一个问题。
- 用户请求未受保护的地址www.server.com
- 响应是一个包含内联脚本的HTML页面,该脚本将window.location.href更改为SAML受保护的页面(服务提供者)www.server.com/app/action?param1=value1¶m2=value2
- Spring SAML检测到需要认证并将用户重定向到登录表单(身份提供者)www.login-server.com
- 此时登录表单是向用户显示的第一页
- 用户将此登录页添加为书签(包括此HTTP会话的SAML相关URL参数)www.login-server.com/adfs/ls/?SAMLRequest=xxx&SigAlg=xxx&Signature=arGdsZwJtHzTDjQP1oYqbjNO
- 用户使用应用程序...
- 第二天,用户打开此书签并进行登录
- IDP将重定向到SP,但相应的HTTP会话已经过期
现在我们的应用程序中出现以下异常:
org.opensaml.common.SAMLException: Response的InResponseToField与发送的消息arGdsZwJtHzTDjQP1oYqbjNO不对应
有什么想法可以处理这个工作流程,以便用户在成功登录后可以使用该应用程序? 感谢您的回答!
init-Action
是什么? - Koray Tugay/index.do?lang=de¶mX=Y
。它完全是静态的,这就是为什么我们的解决方案实际上能够正常工作的原因。 - Ogod