标签:spring spring-security security saml spring-saml
我们正在开发一个受Spring Security SAML保护的应用程序.
身份验证工作正常,但是生产环境中的以下工作流程存在一个问题.
>用户请求不受保护的地址www.server.com
>响应是一个带有嵌入式脚本的html页面,该脚本将window.location.href更改为受saml保护的页面(服务提供商)www.server.com/app/action?param1=value1\u0026amp;param2=value2
> spring saml检测到需要认证,并将用户重定向到www.login-server.com上的登录表单(身份提供者)
>此时,登录表单是显示给用户的第一页
>用户将此登录页面添加为书签(包括此http会话的与saml相关的url参数)www.login-server.com/adfs/ls/?SAMLRequest=xxx\u0026amp;SigAlg=xxx\u0026amp;Signature=arGdsZwJtHzTDjQP1oYqbjNO
>用户使用该应用程序…
>用户第二天打开此书签并登录
> IdP重定向到SP,但是所属的HTTP会话已经过期
现在,我们的应用程序中出现以下异常:
org.opensaml.common.SAMLException:响应的InResponseToField与发送的消息arGdsZwJtHzTDjQP1oYqbjNO不对应
有什么想法如何处理此工作流程,以便用户成功登录后可以使用该应用程序吗?
感谢您的回答!
解决方法:
当您应用生成AuthnRequest时,该请求具有您的应用以某种方式保留的ID.来自IdP的相应响应必须将InResponseTo属性设置为相同的ID值,以便您的应用程序可以验证该响应是否是针对它发送的请求的.
但是,当用户为包含请求的adfs链接添加了书签(www.login-server.com/adfs/ls/?SAMLRequest=xxx …)时,您的应用程序完全忘记了该请求.换句话说,它不再将请求ID保留在某个位置,并且无法验证响应.
解决方案是告诉您的用户不要为www.login-server.com/adfs/ls/?SAMLRequest=xxx …链接添加书签.相反,他们必须在您的应用程序中为该链接添加书签,该链接可以在其中生成新请求并发送到ADFS.
标签:spring,spring-security,security,saml,spring-saml 来源: https://codeday.me/bug/20191011/1892303.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。