【问题标题】:simpleSAMLphp SP metadata returning entityID of http instead of expected httpssimpleSAMLphp SP 元数据返回 http 的 entityID 而不是预期的 https
【发布时间】:2023-04-11 01:22:01
【问题描述】:

我目前在 CentOS 服务器上安装了 simplesamlphp 作为服务提供商。我的 config/authsources.php 定义如下:

'default-sp' => array(
    'saml:SP',
    'entityID' => null,

当我通过 https 访问 /saml/ 网址并导航到“联合”选项卡时,即: https://my.sp/saml/module.php/core/frontpage_federation.php

我注意到返回的实体 ID 是“http”而不是“https”(我希望这是 https)。它显示以下内容:

SAML 2.0 SP Metadata
Entity ID: http://my.sp/saml/module.php/saml/sp/metadata.php/default-sp
default-sp
[ Show metadata ]

当我然后单击“显示元数据”链接以访问 URL https://my.sp/saml/module.php/saml/sp/metadata.php/default-sp?output=xhtml(注意 url 正确为 https)时,元数据 XML 再次返回意外的“http”url,而不是 entityID 的“https”url 和地点。请注意以下 XML 摘录:

<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="http://my.sp/saml/module.php/saml/sp/metadata.php/default-sp">
    -- SNIP --
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://my.sp/saml/module.php/saml/sp/saml2-logout.php/default-sp"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://my.sp/saml/module.php/saml/sp/saml2-acs.php/default-sp" index="0"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" Location="http://my.sp/saml/module.php/saml/sp/saml1-acs.php/default-sp" index="1"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="http://my.sp/saml/module.php/saml/sp/saml2-acs.php/default-sp" index="2"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01" Location="http://my.sp/saml/module.php/saml/sp/saml1-acs.php/default-sp/artifact" index="3"/>
  </md:SPSSODescriptor>
</md:EntityDescriptor>

在与远程 IdP 共享元数据时,这似乎会导致问题。所以我的问题是,为什么它返回 http 而不是 https,有没有办法解决这个问题?我选择不对 entityID 进行硬编码,因为我有 2 个单独的子域访问单个 SP,因此认为允许当前使用的 url 来指示这一点是有意义的(这适用于其他安装)。任何帮助将不胜感激。

【问题讨论】:

    标签: php linux single-sign-on saml simplesamlphp


    【解决方案1】:

    我可以通过确保 config.php 中的“baseurlpath”是 HTTPS 来解决这个问题。

    【讨论】:

      【解决方案2】:

      仅供参考 - entityID 可能看起来像一个 URL,但它不是。它只是一个标识符。因此,http 与 https 应该对最终用户体验绝对没有影响。您可以拥有几乎任何您想要的 String 的 entityId。 SimpleSamlPHP 正在为您生成 entityID,因为您的元数据文件指定了动态 entityID。这使得 SSP 基于请求和身份验证源 ID 的许多内容生成一个 entityID。我建议使用静态 entityID。如果用于生成元数据的请求通过不同的方案(http 与 https)或名称(DNS 名称与 IP 地址与别名)访问您的服务器,则元数据中的 entityID 将不同,您的 SAML 交互可能无法按预期工作。

      【讨论】:

        【解决方案3】:

        您的实体 ID 应为 https:// in /apps/simplesamlphp/config/authsources.php 元数据 XML 再次返回意外的 http 网址而不是位置中 entityID 的 https 网址的原因是因为您可能没有生成证书,您必须在 cert/ 中创建自签名证书目录,如果没有创建的话..

        我在moodle 中使用auth_saml2 插件时遇到了同样的情况。 当我按照链接在我的 Centos 中安装和配置 simpleSAML phphttps://simplesamlphp.org/docs/stable/simplesamlphp-sp 联合选项卡显示 SP 元数据返回给我 https:// 但是当我使用相同的插件用于 Moodle 应用程序时,SP 元数据返回 http:// 而不是 https:// 所以我从 auth_saml2 重新生成证书插件,然后 SP 元数据返回给我 https

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-25
          • 1970-01-01
          • 2019-06-05
          • 2016-01-29
          • 2020-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多