我在我的应用中使用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上)。
答案 0 :(得分:9)
"问题"众所周知 - 请参阅here - 并归结为服务提供商和身份提供商之间的错误时钟同步。
可能,他们现在大约是60秒的时间限制,所以"时不时地"它们不同步边界。
您可以通过以下方式对此进行修复:
还有更多创意可能性,例如:
这两个"解决方案"容易出错并且跳过时间"问题(即时钟没有从WRONG_TIME轻轻地漂移到CORRECT_TIME,它直接设置为"正确的"值)。这可能还有other nasty effects,具体取决于其他条件/软件。
最后你可以修改modules / saml / lib / Message.php并增加时间增量,即使这是"记录问题",假设有一些进程保持这两个系统最多60"不同步(是一些创意时间安排方案,而不是基于ntpd,可能会这样做。)
答案 1 :(得分:2)
对我而言,它看起来像是一个时间问题,可能无法正确同步。
有一个工具(也是一个守护进程)可以随时关注您的时间ntp,因此您可以始终同步。安装它并配置守护进程,我想这可以解决你的问题。