11

我在我的应用程序中使用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 上)。

4

2 回答 2

11

“问题”是已知的——见这里——归结为服务提供商和身份提供商之间的错误时钟同步。

可能,它们现在处于 60 秒的时间限制左右,因此“时不时地”它们会超出同步边界。

您可以通过以下方式解决此问题:

  • (最好)通过 ntpd 将两个系统同步到相同的已知时基。
  • 将两个系统的时钟之一从属于另一个。

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

这两种“解决方案”容易出现错误和“跳时”问题(即时钟不是从 WRONG_TIME 轻轻漂移到 CORRECT_TIME,而是直接设置为“正确”值)。根据其他条件/软件,这也可能产生其他不良影响。

最后,您可以修改 modules/saml/lib/Message.php 并增加时间增量,即使这是“解决问题”,假设有一些进程使两个系统最多 60" 不同步(有一些创造性的时间设置方案,不是基于 ntpd,可以这样做)。

于 2015-05-27T20:29:59.920 回答
2

对我来说,这看起来像是一个时间问题,可能没有正确同步。

有一个工具(还有一个守护进程)可以为您监控时间,ntp,因此您可以始终保持同步。安装它并配置守护进程,我想这可以解决你的问题。

于 2015-05-21T14:35:53.920 回答