urb*_*ban 1 php saml simplesamlphp
过去几天我一直在使用 simplesamlphp 测试 SAML 2.0。我的 SP 端连接到我公司的 IdP。我处于它工作的情况......大多数时候,这是令人困惑的部分。事实:
其他 5% 会抛出类似这样的错误:“无法找到当前绑定。”。不同之处在于,在我的日志中,它显示为:
Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Unable to find the SAML 2 binding used for this request.array (\n)
Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Request method: 'GET'array (\n)
Run Code Online (Sandbox Code Playgroud)
以上只是从上一篇文章修改的一个例子。请注意,我确实array在两行中都看到了。我查看了记录此错误的源代码,但我无法弄清楚它为什么存在(不确定它是否重要 - 似乎是由日志记录工具引入的)
这就是事情变得奇怪的地方!我有时会得到通常的(在无限递归左右)PHP 错误:Allowed memory size of X bytes exhausted (tried to allocate Y bytes). 在我的情况下,X 是 256M,但 Y 是 2+G!!!这种情况很少见,但会发生。当它发生时,PHP 没有太大帮助,它说它发生在“未知的第 0 行”:
[18-Apr-2016 12:07:18 Europe/London] PHP Fatal error: Allowed memory size of 262144000 bytes exhausted (tried to allocate 2480381656 bytes) in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)有时日志显示没有错误,但浏览器抱怨空响应
Edge/IE 浏览器似乎更容易混淆(这并不奇怪:))但它产生相同的日志。例如,空响应显示为“无法加载页面”错误,这反过来表明 DNS 失败。
大多数时候使用后退按钮可以使一切正常。并非总是如此……有时它会卡住,在这种情况下,会出现 simplesamlphp 错误页面并且错误可能会有所不同 ( SimpleSAML_Error_Error: SLOSERVICEPARAMS)。URL 指向 simplesamlphp 而不是服务或 IdP,因此刷新会再次导致错误页面。刷新后,回击毫无意义导致循环回到错误页面
我的想法:
更新1:
相关(相同错误) - https://groups.google.com/forum/#!topic/simplesamlphp/C8XAQblAECU
更新 2:
经过大量阅读和大量日志,我认为我的 SSP 和我的应用程序之间存在会话冲突。从应用程序中删除所有与会话相关的代码,使 SSP 像魅力一样工作。使用我的会话代码,我看到以下错误:
PHP Warning: Unknown: Could not call the sapi_header_callback in Unknown on line 0PHP Notice: Trying to get property of non-object in ?5? on line 352Unsuccessful logout. Status was: exception 'sspmod_saml_Error' with message 'Requester' in我相信上面的大多数(如果不是全部)错误都是由于 SSP 和会话中的一些奇怪状态造成的,这通常不会出现。所以我的新问题更简单:
有没有人用store.type = 'sql'SQLite成功配置过 SSP 1.14.2 ?我可以看到sqlite正在创建的文件以及其中的几个表,但 SSP 总是返回“无状态”错误。我相信将商店更改为 SQL 会解决我的问题...
干杯
我知道这个问题似乎到处都是,而且非常令人困惑......想象一下看日志:)
现在,在jaimeperez - github 上的 SSP (SimpleSamlPhp) 开发人员的帮助下- 我们已将其分解为多个“更简单”的问题:
会话共享:当应用程序和 SSP 都在使用时,$_SESSION您必须:
session_name("XYZ") 调用之前的应用程序使用中session_start()以及在 SSPconfig.php中将非默认值设置为session.phpsession.cookiename. 根据我的测试,两者都必须是非默认的(不是“PHPSESSID”)。php.ini自动启动会话的选项可能会影响这一点(即:如果设置为 false 两者之一可以使用默认值 - 未测试)由 5.4.16 版中的 PHP 错误引起的错误。这使得 PHP SegFault 使 SSP 处于错误状态。这与 SSP 无关,主要是 RHEL/Centos 7 和 PHP 的问题。这解决了错误:
Allowed memory size of X bytes exhausted ... in Unknown on line 0PHP Warning: Unknown: Could not call the sapi_header_callback in Unknown on line 0 和PHP Notice: Trying to get property of non-object in ?5? on line 352(或类似!每次都不同!但它是指向Session.php第 352 行的错误- 这似乎也完全无关紧要)解决这个问题的方法是升级PHP。根据我的阅读,该问题已在 5.4.20 和 5.5.2 (TBC) 中解决
错误Unsuccessful logout. Status was: exception 'sspmod_saml_Error'...是由于 IdP 拒绝为我提供服务,因为作为测试的一部分,我登录和注销的次数太多,速度太快
我通常用短语“我希望这会有所帮助”来结束我的回答......但在这种情况下,我真的希望你没有遇到类似的情况:)希望这个问题和这个答案包含足够的关键字来让谷歌点这里.. .
如果你想关注关于这个的对话,你可以在github上这样做