SimpleSAMLPHP SP 和 ADFS IDP 的 Requester/InvalidNameIDPolicy 错误
Posted
技术标签:
【中文标题】SimpleSAMLPHP SP 和 ADFS IDP 的 Requester/InvalidNameIDPolicy 错误【英文标题】:Requester/InvalidNameIDPolicy Error with SimpleSAMLPHP SP and ADFS IDP 【发布时间】:2015-02-10 12:55:02 【问题描述】:在网上找遍了,特别是
ADFS 2.0 InvalidNameIDPolcy Using SimpleSAMLphp to Authenticate against ADFS 2.0 IdP Requester/InvalidNameIDPolicy我尝试了对 authsource.php 和元数据 php 的所有建议修改。没有任何效果。
这是我的 authsource.php
'default-sp' => array(
'saml:SP',
'privatekey' => 'saml.pem',
'certificate' => 'saml.crt',
'idp' => 'http://domain.com/adfs/services/trust',
我使用XML to simpleSAMLphp metadata converter
生成saml20-idp-remote.php
所以当我访问该页面时,SimpleSAMLPHP 正确地将我重定向到 IDP 登录页面。我解码了 SAML 请求:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_4e03333c7aa76314d965e05f8fcdd3e1f4c5be96c8"
Version="2.0"
IssueInstant="2014-12-11T19:41:50Z"
Destination="https://domain.com/adfs/ls/"
AssertionConsumerServiceURL="https://sub.domain.com/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST">
<saml:Issuer>
https://su.bdomain.com/simplesaml/module.php/saml/sp/metadata.php/default-sp
</saml:Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true"/>
</samlp:AuthnRequest>
使用有效的测试帐户登录后,我被重定向回我的站点并显示错误。
SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
0 /var/www/html/igt_s3k/web/simplesamlphp/www/module.php:179 (N/A)
Caused by: sspmod_saml_Error: Requester/InvalidNameIDPolicy
Backtrace:
3 /var/www/html/igt_s3k/web/simplesamlphp/modules/saml/lib/Message.php:385 (sspmod_saml_Message::getResponseError)
2 /var/www/html/igt_s3k/web/simplesamlphp/modules/saml/lib/Message.php:495 (sspmod_saml_Message::processResponse)
1 /var/www/html/igt_s3k/web/simplesamlphp/modules/saml/www/sp/saml2-acs.php:96 (require)
0 /var/www/html/igt_s3k/web/simplesamlphp/www/module.php:134 (N/A)
我尝试设置不同的 NameIDPolicy,但它们都不起作用。
//'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
//'NameIDPolicy' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
//'NameIDPolicy' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
//'NameIDPolicy' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
谢谢!
【问题讨论】:
我遇到了类似的错误,因为使用 'store.type' => 'memcache',而不是 phpsession 【参考方案1】:从 SimpleSAML v1.15.0 开始,不支持接受的答案,将 NameIDPolicy 设置为 null 会导致错误。
如果您不设置 NameIDPolicy,SAML 请求将默认为:urn:oasis:names:tc:SAML:2.0:nameid-format:transient
,这可能会导致集成问题。
为了不在身份验证请求中显式发送 NameIDPolicy,请应用找到的补丁 here,并在 authsources.php 配置文件中将 NameIDPolicy 设置为 false。
'NameIDPolicy' => false
【讨论】:
在 Message.php 中应用补丁并将 NameIDPolicy 设置为 FALSE 对我有用后,我们还需要确保我们有一个正确的私钥和证书文件用于签名 这是现在的有效答案 请注意:此选项必须在您的 SP 配置中的config/authsources.php
中设置(见下文***.com/a/27451231/336311)。
感谢@BurninLeo - 我已经编辑了答案以添加该信息。【参考方案2】:
是的。在愤怒和沮丧中。我将 NameIDPolicy 设置为 null 并且一切正常。 FML
'default-sp' => array(
'saml:SP',
'privatekey' => 'saml.pem',
'certificate' => 'saml.crt',
'idp' => 'http://comain.com/adfs/services/trust',
'NameIDPolicy' => null,
【讨论】:
@YarGnawh 你为我节省了很多时间和精力!太感谢了!与 Moodle/saml2 Auth 插件一起使用,如果有人遇到我遇到的同一个地方。 非常感谢。这个 bug 仍然存在于 2016 年 6 月 github 上最新的 simplesamlphp 中 我是另一个你刚刚节省了很多时间的人 - 谢谢! 我用谷歌搜索的第一件事。我想知道我会为此燃烧多久【参考方案3】:根据http://social.technet.microsoft.com/wiki/contents/articles/4038.ad-fs-2-0-how-to-request-a-specific-name-id-format-from-a-claims-provider-cp-during-saml-2-0-single-sign-on-sso.aspx 您应该使用未指定的默认值 'NameIDPolicy' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
【讨论】:
按照这里的建议添加“未指定”后,一旦我得到属性响应,我可以看到它说 NameId 有Format urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
所以我只是将其添加为新的 NameIdPolicy(即..... :emailAddress) 并且它现在正在工作以上是关于SimpleSAMLPHP SP 和 ADFS IDP 的 Requester/InvalidNameIDPolicy 错误的主要内容,如果未能解决你的问题,请参考以下文章
“无法使用drupal和simplesamlphp_auth找到IdP的元数据”
没有完全实施 OpenAM 或 OpenSSO 的 OpenAM 或 OpenSSO fedlets 作为 SP 和 ADFS 作为 IdP?