Uncaught Exception: неверные настройки массива: sp_not_found, idp_not_found в src / Saml2 / Settings. php в строке 141 - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь интегрировать SSO в приложение WP. В настоящее время я использую плагин wp-simple-saml , который использует Onelogin PHP toolkit . Когда я добавляю метаданные idP в настройки wp-simple-saml, это дает мне действительный конфиг. Но когда я генерирую метаданные SP из плагина, кажется, что отсутствуют другие поля, и он просто дает мне скелет SAML XML.

<md:EntityDescriptor validUntil="2020-03-22T18:29:30Z" cacheDuration="PT604800S" entityID="https://example.com"><md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://example.com/sso/sls"/><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat><md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="example.com/sso/verify" index="1"/></md:SPSSODescriptor></md:EntityDescriptor>

Вышеприведенные метаданные SP отклоняются idP с недопустимым Ошибка SP. Я пытаюсь сгенерировать правильные метаданные SP, чтобы они выглядели примерно так, как показано ниже.

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="XXXXXXXX.doitt.nycnet-console"
entityID="XXXXXXXXX.doitt.nycnet-console"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#XXXXXXXXXX.doitt.nycnet-console"><ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>bXXXXXXXXXXX</ds:DigestValue></ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>XXXXXXXXXXXXXX</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data><ds:X509Certificate>XXXXXXXXXXXXXXXXXXXX</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing"><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data><ds:X509Certificate>XXXXXXXXXXXXXXXXXX</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor>
<md:KeyDescriptor use="encryption"><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:X509Data>
<ds:X509Certificate>XXXXXXXXXXXXXXXXX</ds:X509Certificate></ds:X509Data></ds:KeyInfo>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://XXXXXXXX.doitt.nycnet/console/saml/SingleLogout/alias/xxxxxx.doitt.nycnet-console"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://XXXXXX.doitt.nycnet/console/saml/SingleLogout/alias/xxxxxx"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://XXXXXXXXXX.doitt.nycnet/console/saml/SSO/alias/xxxxxx" index="0" isDefault="true"/>
</md:SPSSODescriptor></md:EntityDescriptor>

Плагин wp-simple-saml предоставляет ловушку для настройки через код, который я использую для добавления отсутствующих поля для метаданных SP. Хук wpsimplesaml_attribute_mapping туда, куда я передаю следующую конфигурацию:

add_filter( 'wpsimplesaml_attribute_mapping', function(){
        return  [
                'entityId'                 => 'https:/example.com',
                'assertionConsumerService' => [
                        'url' => 'https:/example.com/sso/verify',
                        'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'
                ],
                'singleLogoutService'      => [
                        'url' => 'https://example.com/sso/sls',
                        'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'
                ],
                'AuthNRequest'       => true,
                'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
                'NameIDFormat'       => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'

        ];
} );

Как правильно передать конфигурацию плагину onelogin через хук? Я получаю следующую ошибку:

Uncaught Exception: неверные настройки массива: sp_not_found, idp_not_found в src / Saml2 / Settings. php в строке 141

...