【发布时间】: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