【问题标题】:SimpleSAMLphp as idp : Metadata not foundSimpleSAMLphp 作为 idp:找不到元数据
【发布时间】:2019-09-22 02:36:53
【问题描述】:

我正在使用 SAML2 协议开发 SSO 身份验证系统。因为我还没有真正的 IDP 信息,所以我需要测试环境,所以我使用了 this docker 图像,它的作用就像一个魅力。我可以通过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 插件。

【问题讨论】:

    标签: docker single-sign-on simplesamlphp


    【解决方案1】:

    终于解决了。我发送的 Authn 请求包含空的“颁发者”字段,并且在 idp 端需要这个字段,因为 simpleSAMLphp 似乎将 SP 元数据存储在像 Metdata ['spName'] 这样的数组中。所以他们当然不是空字符串作为键的条目。

    【讨论】:

    • 您如何将元数据设置为您的 SP/将其发送给 IDP?
    • 看看我发布的链接,关于我使用的 docker 图像和生成 saml 请求的插件,所有内容都在他们的文档中详细说明。对于 idp 端的 SP 元数据,在这种情况下,您实际上不需要创建 xml 元数据文件,因为 docker 映像能够使用环境变量。这只是一个 POC,我不会在生产中运行
    • 谢谢。我正在使用的模块需要端点中的 SP 元数据
    • 如果您不需要改变的东西,您可以随时使用此工具生成您的 sp 元数据:samltool.com/sp_metadata.php
    • 解决方案应该包含在答案中,而不是包含在易变的外部链接/文档中。
    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2015-06-12
    • 2016-06-23
    • 2016-12-24
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多