Php &引用;收到一个将来有效的断言。检查IdP和SP上的时钟同步;
我正在我的应用程序中使用。大多数时候都很好,没有问题。其他时候我会这样:Php &引用;收到一个将来有效的断言。检查IdP和SP上的时钟同步;,php,simplesamlphp,Php,Simplesamlphp,我正在我的应用程序中使用。大多数时候都很好,没有问题。其他时候我会这样: 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 I
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将两个系统同步到相同的已知时基
- 将两个系统中的一个时钟切换到另一个
- 具有轮询一个系统的cron作业,并且
- 在任一系统上每隔一段时间运行netdate
最后,您可以修改modules/saml/lib/Message.php并增加时间增量,即使这是“掩盖问题”,假设有某个过程使两个系统最多不同步60”(有一些创造性的时间设置方案,不基于ntpd,可以这样做).当我们使用SimpleSAML进行身份验证,然后在应用程序级别处理单独的会话时,modules/saml/lib/Message.php中增加时间有什么危害吗?这不是一个非常干净的解决方案,您必须维护它。如果可能,请解决真正的问题:同步时钟。