SimpleSAMLphp状态信息丢失 - php

我在https://biz.dev.originsystems.co.za处设置了服务提供商。我在http://stage.originsystems.co.za处设置了一个IdP。

使用https://biz.dev.originsystems.co.za/simplesaml/module.php/core/authenticate.php中的工具测试身份验证时,一切正常。它返回到具有必需属性的开发站点,并且一切都很开心和愉快。

但是,当我尝试在https://biz.dev.originsystems.co.za上的代码中实际击中IdP时,我被重定向到舞台登录页面,但是登录后却出现“状态信息丢失”错误。我得到以下调试信息:

SimpleSAML_Error_NoState: NOSTATE

Backtrace:
2 /webdevroot/Updraft/web/external/System/SSO/simplesaml/lib/SimpleSAML/Auth/State.php:225 (SimpleSAML_Auth_State::loadState)
1 /webdevroot/Updraft/web/external/System/SSO/simplesaml/modules/saml/www/sp/saml2-acs.php:63 (require)
0 /webdevroot/Updraft/web/external/System/SSO/simplesaml/www/module.php:134 (N/A)

我已经完成了页面要求我执行的所有疑难解答,但这种情况仍然存在。

我在浏览器中打开了开发工具,并查看了cookie信息。 biz.dev.originsystems.co.za的cookie包含SimpleAMLAuthToken,因此我认为这些cookie可以正常工作。我用来打IdP的代码是:

$as = new SimpleSAML_Auth_Simple("stage-sso-sp");
$as->requireAuth();
$attributes = $as->getAttributes();
print_r($attributes);

更新:

这是更多信息...

我想确定问题是否出在我如何设置IdP上,所以我开始将SSO Circle用于IdP。在SSO Circle上进行身份验证后,状态信息也会丢失。我认为这意味着问题出在我的SimpleSAML服务提供商设置上。这是发生了什么...

当我转到https://biz.stage.originsystems.co.za/simplesaml处的SimpleSAML测试身份验证源页面时,我具有以下cookie值...

Name                                       Value
SimpleSAMLAuthToken                        _a53569c0701dd02832532df14cf10cd0b2d9fcd6b6
biz.stage.originsystems.co.za              10fc356e0bfbf707af5fa5854c378755
ccof                                       RGN002
xbrF                                       84aadc624fc51c0c9340d45645c08643

除了SimpleSAMLAuthToken之外的所有内容都来自我们的应用程序,不应影响SimpleSAML。重定向到SSO Circle并通过身份验证后,我将返回到SimpleSAML页面,并且Auth Token的值现在为_39679e07cb1911e08b2bff3580a9929faddd07e9b6,并且所有相关信息均已正确返回。日志文件显示以下活动。

Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Received SAML2 Response from 'http://idp.ssocircle.com'.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] No certificate in message when validating against fingerprint.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Found 1 certificates in SAML2_Assertion
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Has 1 candidate keys for validation.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Validation with key #0 succeeded.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Filter config for http://idp.ssocircle.com->https://biz.stage.originsystems.co.za/simplesaml/module.php/saml/sp/metadata.php/default-sp: array (  0 =>   sspmod_core_Auth_Process_LanguageAdaptor::__set_state(array(     'langattr' => 'preferredLanguage',     'priority' => 90,  )),)
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Deleting state: '_742b094314383407864f56bccc6afd7de3dcb3211e'
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Session: doLogin("default-sp")
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Session: Valid session found with 'default-sp'.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Session: Valid session found with 'default-sp'.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/status]
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/attributes]
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/core/dictionaries/frontpage]

如果我转至https://biz.stage.originsystems.co.za?ccof=RGN002,则会被重定向到我希望进行身份验证的SSO Circle。目前,我的Autth令牌的值为_39679e07cb1911e08b2bff3580a9929faddd07e9b6。通过身份验证后,我将被定向到SimpleSAML错误页面“状态信息丢失”,并且Auth令牌仍然为_39679e07cb1911e08b2bff3580a9929faddd07e9b6

日志显示为...

Feb 02 13:08:31 simplesamlphp DEBUG [8abc64dd04] Loading state: '_498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f'
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] SimpleSAML_Error_NoState: NOSTATE
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] Backtrace:
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] 2 /OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/lib/SimpleSAML/Auth/State.php:225 (SimpleSAML_Auth_State::loadState)
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] 1 /OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/saml/www/sp/saml2-acs.php:63 (require)
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] 0 /OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/www/module.php:134 (N/A)
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] Error report with id dfbb52b0 generated.
Feb 02 13:08:31 simplesamlphp DEBUG [8abc64dd04] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/errors]
Feb 02 13:08:31 simplesamlphp DEBUG [8abc64dd04] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/core/dictionaries/no_state]

在我看来,认证令牌应该为_498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f,但并非出于某种原因。由于SimpleSAML找不到该令牌,因此它永远不会删除旧令牌并创建新令牌。也许我错了。我非常愿意得到纠正。我的问题是我不知道是什么原因造成的。我已将配置文件中的cookie.name设置为“ biz.stage.originsystems.co.za”,这对于SimpleSAML控制面板似乎工作正常,但在实际应用程序中使用SP时则无法正常工作。有人可以在这里指出正确的方向吗?我迷路了。

参考方案

您必须定义两个完全独立的环境,以便按照描述的方式将这两个环境(具有两个完全不同的身份提供者)混合使用(显然不起作用,除非将它们都添加到了SSO配置-可能不是期望的结果);简单检查服务器的主机名并相应地定义变量-这可以“即时”执行,也可以通过两个不同的配置文件来完成(在部署结束时推送配置文件实际上是很普遍的)。对我来说,这听起来更像是部署问题(缺少实时站点的正确配置文件),而不是SSO问题。

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP-如何建议搜索字词,“你是说……?” - php

当使用不检索任何结果的术语搜索数据库时,我想允许“您是不是……”建议(例如Google)。例如,如果有人寻找“ jquyer””,它将输出“ did you mean jquery?”当然,建议结果必须与数据库内部的值匹配(我正在使用mysql)。您知道可以做到这一点的图书馆吗?我已经用谷歌搜索过,但是没有找到任何好的结果。或者,也许您有一个想法,该如何独自…