SimpleSamlphp中的“状态信息丢失”
我收到了一个错误状态信息丢失了SimpleSamlphp中的“状态信息丢失”。 使用sprint-security作为SP,并在Simplesamlphp上配置Idp。 然后,浏览器可以将SP网页重定向到Idp,但是在登录用户名和密码后,出现错误 “状态信息丢失”。 ```SimpleSamlphp中的“状态信息丢失”
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] array (
'id' => 'a3a41e7aia439d7371j5e742e35jhi',
'url' => NULL,
)
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] Ron====sid===end
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] NULL
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] Ron====url===end
Apr 19 08:52:28 simplesamlphp DEBUG [bc5df4b2c1] Ron====state:NULL
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] SimpleSAML_Error_NoState: NOSTATE
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] Backtrace:
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] 2 /var/simplesamlphp/lib/SimpleSAML/Auth/State.php:274 (SimpleSAML_Auth_State::loadState)
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] 1 /var/simplesamlphp/modules/saml/www/sp/saml2-acs.php:91 (require)
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] 0 /var/simplesamlphp/www/module.php:137 (N/A)
Apr 19 08:52:28 simplesamlphp ERROR [bc5df4b2c1] Error report with id f9c150bb generated.
``` 我发现STATEID从其通过SP发送。然后在Idp方面,现在日志显示这些会话包含两个有效的用于伪造的cookie和一个authtoken。但是这两个ID都不能与响应中的“RequestId”或“InResponseTo”匹配。 我只是卡在这里。它是如何发生的?任何人都可以帮忙提前致谢。
我发现php的逻辑跟在我的情况下的SP php脚本,更明显的是,当我手动更改“stateId”时,出现如下错误: SimpleSAML_Error_Exception:This SP [ https://domainname/simplesaml/module.php/saml/sp/metadata.php/default-sp]不是该断言的有效听众。候选人是:[com:vdenotaris:spring:sp]
这是非常奇怪的,超出我的期望。然后我检查了文件 “metadata/saml20-sp-remote.php”,SimpleSAMLphp文档说这是为了将SP元数据添加到Idp配置中让它知道。 最后,我发现我在这里填入了错误的SP元数据。 出了问题,如果是这样的:
$metadata['com:vdenotaris:spring:sp'] = array(
'AssertionConsumerService' => 'https://domainname/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',
'SingleLogoutService' => 'https://domainname/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',
);
的AssertionConsumerService和SingleLogoutService应该在你的SP分配网址,因为他们是在SP的服务。 因此,它应该是这样的:
$metadata['com:vdenotaris:spring:sp'] = array(
'AssertionConsumerService' => 'https://SPonRonSever:8443/prj/saml/SSO',
'SingleLogoutService' => 'https://SPonRonSever:8443/prj/saml/SingleLogout',
);
然后,当你在浏览器的地址栏中键入“https://SPonRonSever:8443/prj”,它可以跳到由IDP提供的登录页面,验证后,你可以访问网页你自找的。