Я пытаюсь интегрировать 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