Я пытаюсь использовать паспорт-самл для аутентификации в своем проекте. До сих пор мне удавалось использоватьpassport.generateServiceProviderMetadata(decryptionCert) для создания следующего файла metadata.xml:
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="passport-saml" ID="passport_saml">
<SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="encryption">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
</KeyDescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="www.mywebsite.com/logout/callback"/>
<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
<AssertionConsumerService index="1" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="www.mywebsite.com/login/callback"/>
</SPSSODescriptor>
</EntityDescriptor>
Конфиг SamlStrategy:
{
callbackUrl: 'www.mywebsite.com/login/callback',
entryPoint: 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php',
decryptionPvk: 'MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh...',
issuer: 'passport-saml',
logoutCallbackUrl: 'www.mywebsite.com/logout/callback'
}
Есть несколько изменений, которые мне нужно внести, чтобы соответствовать требованиям IDP:
- Добавьте AuthnRequestsSigned=false и WantAssertionsSigned=true в тег SPSSODescriptor.
- Измените KeyDescriptor, чтобы использовать подпись вместо шифрования, и удалите теги EncryptionMethod.
- Используйте привязки SOAP для SingleLogoutService вместо HTTP-POST
Вот файл metadata.xml, который я хочу получить:
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="passport-saml" ID="passport_saml">
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="www.mywebsite.com/logout/callback"/>
<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
<AssertionConsumerService index="1" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="www.mywebsite.com/login/callback"/>
</SPSSODescriptor>
</EntityDescriptor>
Есть ли способ настроить паспорт для создания вышеуказанных метаданных? Или я должен просто создать его вручную? Любая помощь или совет будут высоко оценены!