Ogo*_*god 10 security spring spring-security saml spring-saml
我们正在开发一个受 spring security saml 保护的应用程序。
身份验证工作正常,但在生产环境中以下工作流程存在一个问题。
现在我们在我们的应用程序中得到以下异常:
org.opensaml.common.SAMLException:响应的 InResponseToField 与发送的消息 arGdsZwJtHzTDjQP1oYqbjNO 不对应
任何想法如何处理此工作流程以便用户可以在成功登录后使用该应用程序?感谢您的回答!
Ogo*_*god 18
我们通过对 spring saml 配置的以下更改解决了我们的问题:
successRedirectHandler( org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler) 的bean 中,我们将 defaultTargetUrl 设置为我们应用程序的 init-Action(包括所有请求参数)。如果 IdP 发起 SSO,将自动使用此 URL。contextProvider( org.springframework.security.saml.context.SAMLContextProviderLB) 的Bean 中,我们将 storageFactory 设置为org.springframework.security.saml.storage.EmptyStorageFactory. 这将禁用 InResponseToField 的检查。当您申请生成 AuthnRequest 时,该请求具有您的应用程序以某种方式保留的 ID。来自 IdP 的相应响应必须将 InResponseTo 属性设置为相同的 ID 值,以便您的应用程序可以验证响应是否针对它发送的请求。
但是,当您的用户将包含请求的 adfs 链接添加为书签 (www.login-server.com/adfs/ls/?SAMLRequest=xxx...) 时,您的应用程序完全忘记了该请求。换句话说,它不再将请求 ID 保存在某处并且无法验证响应。
解决方案是告诉您的用户不要为 www.login-server.com/adfs/ls/?SAMLRequest=xxx... 链接添加书签。相反,他们必须为您的应用程序中的链接添加书签,以便它可以生成新请求并发送到 ADFS。
| 归档时间: |
|
| 查看次数: |
15415 次 |
| 最近记录: |