2017-02-21 35 views
0

Я использую SAML 2.0 для SSO в своем приложении. В настоящее время я использую один сертификат в метаданных. Таким образом, на момент истечения срока действия сертификата. Мне нужно сменить сертификат в определенное время, то есть на момент истечения срока действия сертификата. Мне нужно поддерживать поддержку двух сертификатов в метаданных. Таким образом, я могу добавить новый сертификат до истечения срока действия старого. Как я могу достичь этого? Вот мой существующий medatadata файл:Несколько сертификатов в файле метаданных SAML xml

 <?xml version="1.0" encoding="UTF-8"?> 
<!-- $Id: SPMetadata.xml 2936 2008-05-26 08:06:46Z jre $ --> 
<md:EntityDescriptor entityID="https://examplecom/sso/saml/metadata" xmlns:brs="http://www.eogs.dk/2007/07/brs" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> 
    <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol"> 
     <md:KeyDescriptor> 
     <ds:KeyInfo> 
      <ds:X509Data> 
       <ds:X509Certificate> 
       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----My certificate which I am using------ 
       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
      </ds:X509Certificate> 
      </ds:X509Data> 
     </ds:KeyInfo> 
     </md:KeyDescriptor> 
     <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:emailAddress</md:NameIDFormat> 
     <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://examplecom/sso/saml/SAMLAssertionConsumer" index="0"/> 
    </md:SPSSODescriptor> 
    <md:Organization> 
     <md:OrganizationName xml:lang="en">XXX example</md:OrganizationName> 
     <md:OrganizationDisplayName xml:lang="en">XXX example</md:OrganizationDisplayName> 
     <md:OrganizationURL xml:lang="en">http://www.examplecom</md:OrganizationURL> 
    </md:Organization> 
    <md:ContactPerson> 
     <md:Company>XXX</md:Company> 
     <md:GivenName>XXX Support</md:GivenName> 
     <md:SurName>Support</md:SurName> 
     <md:EmailAddress>mailto:[email protected]</md:EmailAddress> 
     <md:TelephoneNumber>XXXXX</md:TelephoneNumber> 
    </md:ContactPerson> 
</md:EntityDescriptor> 

ответ

1

Athough XML Signature Синтаксис и рекомендации обработки (https://www.w3.org/TR/xmldsig-core/) ссылка в SAML спецификации мета данных позволит определить несколько элементов в <ds:X509Data> элемента, то SAMLv2 профиль совместимости (например, http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-cs-01.html, раздел 2.5.1) предлагает использовать несколько элементов <ds:KeyInfo> в пределах <md:KeyDescriptor> элементов.

+0

Могу ли я иметь несколько тегов ' 'в файле метаданных? –

+1

В соответствии с рекомендацией синтаксиса и обработки XML Signature это будет разрешено, но большинство SAML SP/IdP не поддерживают это, поскольку они в основном следуют рекомендациям, приведенным в профиле совместимости SAMLv2. . https://bugster.forgerock.org/jira/browse/OPENAM-10330 –

1

Вы можете иметь ноль или более элементов KeyDescriptor, как это определено в the standard так просто идти вперед и добавить новый

<md:KeyDescriptor> 
    <ds:KeyInfo> 
     <ds:X509Data>      
      <ds:X509Certificate> 
        YYYYYYYYYYYYYYY 
      </ds:X509Certificate> 
     </ds:X509Data> 
    </ds:KeyInfo> 
    </md:KeyDescriptor> 

ниже существующей.