SimpleSAMLphp状态信息丢失

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

在使用以下位置的工具测试身份验证时:https://biz.dev.originsystems.co.za/simplesaml/module.php/core/authenticate.php,一切正常。它带着所需的属性返回到开发人员站点,所有人都很开心

但是,当我试图在代码中实际命中IdP时https://biz.dev.originsystems.co.za,我被重定向到“阶段登录”页面,但在登录后,我收到“状态信息丢失”错误。我获得以下调试信息:

SimpleSAML\u错误\u NoState:NoState
回溯:
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(必需)
0/webdevroot/Updraft/web/external/System/SSO/simplesaml/www/module.php:134(不适用)

我已经完成了页面要求我做的所有故障排除,但情况仍然存在

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

$as=new SimpleSAML_Auth_Simple(“stage sso sp”);
$as->requireAuth();
$attributes=$as->getAttributes();
打印(属性);

更新:

这里有更多的信息

我想确定问题是否出在我如何设置IdP上,所以我开始对IdP使用SSO循环。在SSO圈上进行身份验证后,状态信息也会丢失。我认为这意味着问题出在我的SimpleSAML服务提供商设置的某个地方。下面是正在发生的事情

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

名称值
SimpleSamalAuthToken_a53569c0701dd02832532df14cf10cd0b2d9fcd6b6
biz.stage.Origins Systems.co.za 10FC356E0BF707AF5FA5854C378755
ccof RGN002
xbrF 84aadc624fc51c0c9340d45645c08643

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

Feb 02 12:58:22 simplesamlphp调试[7c4534ae0a]从收到SAML2响应'http://idp.ssocircle.com'.
Feb 02 12:58:22 simplesamlphp调试[7c4534ae0a]根据指纹进行验证时,消息中没有证书。
2月2日12:58:22 simplesamlphp调试[7c4534ae0a]在SAML2_断言中找到1个证书
2月2日12:58:22 simplesamlphp调试[7c4534ae0a]有1个候选密钥用于验证。
2月2日12:58:22键为#0的simplesamlphp调试[7c4534ae0a]验证成功。
Feb 02 12:58:22 simplesamlphp调试[7c4534ae0a]的筛选器配置http://idp.ssocircle.com->https://biz.stage.originsystems.co.za/simplesaml/module.php/saml/sp/metadata.php/default-sp: 数组(0=>sspmod\u core\u Auth\u Process\u languageAdapter::\u设置\u状态(数组('langattr'=>'preferredLanguage','priority'=>90,),)
Feb 02 12:58:22 simplesamlphp调试[7c4534ae0a]删除状态:“_742B09443143403407864F56BCC6AFD7DE3DCB3211E”
Feb 02 12:58:22 simplesamlphp调试[7c4534ae0a]会话:doLogin(“默认sp”)
2月2日12:58:22 simplesamlphp调试[7c4534ae0a]会话:找到具有“默认sp”的有效会话。
2月2日12:58:22 simplesamlphp调试[7c4534ae0a]会话:找到具有“默认sp”的有效会话。
二月二日12:58:22 simplesamlphp调试[7c4534ae0a]模板:正在阅读[/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/status]
二月二日12:58:22 simplesamlphp调试[7c4534ae0a]模板:正在阅读[/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/attributes]
2月2日12:58:22 simplesamlphp调试[7c4534ae0a]模板:正在阅读[/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/core/Dictionary/frontpage]

如果我去https://biz.stage.originsystems.co.za?ccof=RGN002,我被重定向到SSO圈,然后在那里进行身份验证。此时,我的Autth令牌的值为\u 39679E07CB1911E08B2BFF3580A9929FADD07E9B6。一旦我通过身份验证,我将被引导到SimpleSAML错误页面“状态信息丢失”,身份验证令牌仍然是\u 39679E07CB1911E08B2BFF3580A9929FADD07E9B6

日志上写着

Feb 02 13:08:31 simplesamlphp调试[8abc64dd04]加载状态:''u 498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f'
Feb 02 13:08:31 simplesamlphp错误[8abc64dd04]SimpleSAML_错误\u NoState:NoState
Feb 02 13:08:31 simplesamlphp错误[8abc64dd04]回溯:
二月二日13:08:31 simplesamlphp错误[8abc64dd04]2/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/lib/simplesaml/Auth/State.php:225(simplesaml_Auth_State::loadState)
二月二日13:08:31 simplesamlphp错误[8abc64dd04]1/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/saml/www/sp/saml2 acs.php:63(必需)
二月二日13:08:31 simplesamlphp错误[8abc64dd04]0/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/www/module.php:134(不适用)
Feb 02 13:08:31生成id为dfbb52b0的simplesamlphp错误[8abc64dd04]错误报告。
2月2日13:08:31 simplesamlphp调试[8abc64dd04]模板:正在阅读[/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/errors]
2月2日13:08:31 simplesamlphp调试[8abc64dd04]模板:正在阅读[/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/core/dictionary/no_state]

在我看来,身份验证令牌应该是\u 498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f,但出于某种原因不是这样。由于SimpleSAML无法找到该标记,因此它从不删除旧标记并创建新标记。也许我错了。我完全愿意被纠正。我的问题是,我不知道是什么导致了这一切。我已经将配置文件中的cookie.name设置为“biz.stage.originsystems.co.za”,这对于SimpleSAML控制面板来说似乎很好,但在实际应用程序中使用SP时却不起作用。有人能给我指一下正确的方向吗?我迷路了

您必须定义两个完全独立的环境,以避免将这两个环境(具有两个完全不同的身份提供程序)混合在一起,正如您所描述的(这显然不起作用,除非已将这两个环境都添加到SSO配置中-这可能不是期望的结果);简单地检查服务器的主机名并相应地定义变量-这可以“动态”完成,也可以通过两个不同的配置文件完成(实际上在部署结束时推送配置文件是很常见的)。对我来说,这听起来更像是一个部署问题(缺少适用于实时站点的正确配置文件),而不是一个SSO问题

发表评论