我正在使用SAML2协议开发SSO身份验证系统。由于我还没有真正的IDP信息,因此我需要测试环境,因此我使用了this码头工人映像,该映像的工作原理很吸引人。我可以通过localhost:8080
毫无问题地访问它,也可以使用测试帐户登录。
但是,当我尝试登录我的SP(我正在工作的网站)时,尽管我很好地重定向到localhost:8080/simplesaml/saml2/idp/SSOService.php
上的idp,但我收到一条错误消息,告诉我找不到元数据。这是堆栈跟踪:
SimpleSAML_Error_MetadataNotFound: METADATANOTFOUND('%ENTITYID%' => '\'\'')
Backtrace:
3 lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:300 (SimpleSAML_Metadata_MetaDataStorageHandler::getMetaData)
2 lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:320 (SimpleSAML_Metadata_MetaDataStorageHandler::getMetaDataConfig)
1 modules/saml/lib/IdP/SAML2.php:330 (sspmod_saml_IdP_SAML2::receiveAuthnRequest)
0 www/saml2/idp/SSOService.php:19 (N/A)
有人遇到过同一个人吗?因为我不太了解SimpleSAMLphp在哪里尝试获取那些元数据。
注意:
我可以手动在localhost:8080/simplesaml/saml2/idp/metadata.php
这是我正在处理的一个旧项目,它是symfony 1的一个分支,因此我不能使用更多最新的插件。因此,对于SSO,我在服务提供商端使用this插件。
答案 0 :(得分:0)
终于解决了。我发送的Authn请求包含一个空的“ issuer”字段,并且idp端需要此字段,因为simpleSAMLphp似乎将SP元数据存储在Metdata ['spName']之类的数组中。因此,他们当然没有空字符串作为键的条目。