"收到一个有效的断言。检查IdP和SP"

时间:2015-05-05 04:08:08

标签: php simplesamlphp

我在我的应用中使用https://simplesamlphp.org/。大部分时间都很好,没有问题。其他时候我得到这个:

SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
0 ssoclient/www/module.php:180 (N/A)
Caused by: SimpleSAML_Error_Exception: Received an assertion that is valid in the future. Check clock synchronization on IdP and SP. 
Backtrace:
3 ssoclient/modules/saml/lib/Message.php:565 (sspmod_saml_Message::processAssertion)
2 ssoclient/modules/saml/lib/Message.php:523 (sspmod_saml_Message::processResponse)
1 ssoclient/modules/saml/www/sp/saml2-acs.php:75 (require)
0 ssoclient/www/module.php:135 (N/A)

为什么会发生这种情况,我该如何解决?我需要更改系统时间吗? (我在Debian上)。

2 个答案:

答案 0 :(得分:9)

"问题"众所周知 - 请参阅here - 并归结为服务提供商和身份提供商之间的错误时钟同步。

可能,他们现在大约是60秒的时间限制,所以"时不时地"它们不同步边界。

您可以通过以下方式对此进行修复:

  • (最好)通过ntpd将两个系统同步到相同的已知时基。
  • 奴役两个系统中的一个'时钟到另一个。

还有更多创意可能性,例如:

这两个"解决方案"容易出错并且跳过时间"问题(即时钟没有从WRONG_TIME轻轻地漂移到CORRECT_TIME,它直接设置为"正确的"值)。这可能还有other nasty effects,具体取决于其他条件/软件。

最后你可以修改modules / saml / lib / Message.php并增加时间增量,即使这是"记录问题",假设有一些进程保持这两个系统最多60"不同步(一些创意时间安排方案,而不是基于ntpd,可能会这样做。)

答案 1 :(得分:2)

对我而言,它看起来像是一个时间问题,可能无法正确同步。

有一个工具(也是一个守护进程)可以随时关注您的时间ntp,因此您可以始终同步。安装它并配置守护进程,我想这可以解决你的问题。