正在重播带有 ID [id] 的 SAML 断言



我正在使用ComponentSpace为我的.net核心应用程序设置SAML。使用的IDP是OneLogin,服务提供商是建立在他们的例子之上的。

一切都很好。我们今天部署,每次尝试连接时都会收到错误

"The SAML assertion with ID [the id] is being replayed". 

值得一提的是,我们部署应用程序的服务器位于澳大利亚。

我不明白如果我们只是尝试连接,为什么会被重播。在每个错误中,我们都会看到一个不同的 id。

我尝试将断言生命周期设置为 24 小时

"AssertionLifeTime": "24:04:04"

但这并没有什么区别。

我们保留以前的 SAML 断言 ID 的缓存,以便检测可能的重放攻击。每个 SAML 断言都有一个唯一的 ID,因此您再也不会看到相同的 ID。每次我们收到断言时,我们都会根据此缓存对其进行检查。如果 ID 在缓存中,我们将引发此异常。在正常情况下,您不应该看到这种类型的错误。

服务器的位置和断言生存期都不应产生任何影响。有单独的检查以确保断言没有过期,但所有时间都采用 UTC,只要服务器时钟合理同步,就不会有任何问题。如果有,您会看到不同的异常消息。

奇怪的是你看到他的错误,更奇怪的是它只是在部署后才开始的。SAML 响应由 IdP 在 HTTP 帖子中发送。是否有可能某种网络基础结构或配置导致这些消息重复?跟踪应用程序收到的网络流量将有助于确定原因。

我正在使用另一个 IDP 和 SP,但至少就我而言,问题是如果登录过程花费太多时间,用户单击">后退"或"刷新"按钮并尝试再次使用相同的 SAML 断言,则用户登录。

正如信息: 每个 SAML 断言都有一个唯一的 ID。 可以在系统中配置 SAML 断言的生存期。 您可以检查 IDP 和 SP 之间的时差,通常为 3 秒。

最新更新