"收到了将来有效的断言。检查 IdP 和 SP 上的时钟同步"



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

"问题"是已知的 - 请参阅此处 - 归结为服务提供商和身份提供商之间的错误时钟同步。

可能,它们现在是60秒的时间限制,因此"时不时地"它们从同步边界中脱落。

您可以通过:

对此进行补救
  • (最佳)同步两个系统都可以通过NTPD。
  • 将两个系统的时钟之一奴隶到另一个。

也有更多的创造力,例如:

  • 拥有一个调查一个系统并通过ssh
  • 将时钟设置为另一个系统的Cron作业
  • 以任何一个系统的间隔运行NetDate

这两个"解决方案"很容易出现错误和"时间跳过"问题(即,时钟并没有从错误的_time轻轻地漂移到CROCKER_TIME,它直接设置为"正确"值)。这也可能取决于其他条件/软件。

最后,您可以修改模块/saml/lib/message.php并增加时间delta,即使这是"问题上的纸张",假设有一些过程可以保留两个系统最多是60英寸的同步(一些创意的时间表方案,而不是基于NTPD,可以这样做)。

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

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

最新更新