在 SimpleSAML 请求中设置 nameid-format:persistent

在 SimpleSAML 请求中设置 nameid-format:persistent

我正在通过 SimpleSAML 设置单点登录(作为服务提供商)。从身份提供者的 XML 导入元数据后,第一次重定向成功。

但是,登录失败,sspmod_saml_Error: Requester/InvalidNameIDPolicy: An error occurred.并且身份提供者 (idp) 告诉我请求应该包括

format: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

代替

format: urn:oasis:names:tc:SAML:2.0:nameid-format:transient

我在 SimpleSAML 手册中找到的唯一内容涉及 idp 配置(手动的)。然而,当我将它添加metadata/shib13-sp-remote.phpmetadata/saml20-sp-remote.php...

$metadata['<same URL as in metadata/saml20-idp-remote.php>'] = array (
        'NameIdFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
);

...然后什么都没有改变。请求仍然包含:

<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true"/>

这并不意外,因为我正在尝试将请求配置为 idp,而不是 sp。因此,在绝望中,我也尝试过将设置NameIdPolicy为相同的值,并且我也尝试过 ...-idp-remote.php 文件,但(正如预期的那样)这也没有奏效。我还尝试过将我的服务提供商的 ID 作为 $metadata 的键,但是......好吧。

还尝试了修改为metadata/saml20-ipd-hosted.php如下描述这里,但这也没有任何效果。

这真的是在黑暗中摸索,SimpleSAML 文档缺少一些基本信息(例如,在哪里放置这些参数)...因此,我认为我输入了错误的文件、错误的密钥或错误的设置。欢迎任何提示。谢谢!

答案1

经过一番搜索,我发现这个行为在 SimpleSAML 中是硬编码的modules/saml/lib/Message.php

    $policy = array(
        'Format'      => $nameIdPolicy_cf->getString('Format', \SAML2\Constants::NAMEID_TRANSIENT),
        'AllowCreate' => $nameIdPolicy_cf->getBoolean('AllowCreate', true),
    );

改变这一点并不能解决与 IdP 的通信问题...所以这样可能完全没问题。

相关内容