看完整个互联网之后,尤其是

  • 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',
    

    谢谢!

    最佳答案

    从SimpleSAML v1.15.0开始,不支持接受的答案,并且将NameIDPolicy设置为null将导致错误。

    如果未设置NameIDPolicy,则SAML请求将默认为:urn:oasis:names:tc:SAML:2.0:nameid-format:transient,这可能会导致集成问题。

    为了不在auth请求中明确发送NameIDPolicy,应用找到的补丁here,然后在authsources.php配置文件中将NameIDPolicy设置为false。

    'NameIDPolicy' => false
    

    10-06 03:07