在springsecuritysaml2provider版本5.7.x中,如果在身份验证响应中提供了InResponseTo,则引入了InResponseTo的强制验证。
验证逻辑期望在HttpSession中找到保存的Saml2AuthenticationRequest。但是,只有在未设置SameSite属性的情况下才可能找到。
根据当前项目的安全要求,我正在将其设置为宽松或严格。此配置是在应用程序外部完成的。这会导致会话和请求数据丢失。
也许有人已经处理了一个问题,并知道如何处理它?我没有看到任何方法来禁用验证或保存请求的替代方法在库中可用。
1条答案
按热度按时间nxagd54h1#
在将spring security从5.x升级到6时,我遇到了spring session cookie的相同问题。似乎没有任何标准的解决方案。目前,我提供了一个
Saml2AuthenticationRequestRepository
的实现,它根据RelayState参数将SAML请求保存在数据库中。下面是使用Mongo的示例实现。任何后端(内存缓存、Redis、MySQL等)可用于-添加此内容后,所有SAML验证(包括InResponseTo验证)均成功通过。由于RelayState不应根据规范在SAML请求之间更改,因此这似乎是合理的替代方案(目前尚无任何标准解决方案)。我正在通过标准安全测试运行此内容,并将使用我的发现(如果有)更新解决方案。