SAML 元数据 xml 文件中的多个证书

Multiple certificate in SAML metadata xml file

我在我的应用程序中使用 SAML 2.0 进行 SSO。 目前我在元数据中使用一个证书。因此,在证书到期时。我必须在特定时间更改证书,即在证书过期时。 我需要在元数据中支持双证书支持。因此,我可以在旧证书过期之前添加新证书。 我怎样才能做到这一点? 这是我现有的元数据文件:

      <?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:saml-support@examplecom</md:EmailAddress>
      <md:TelephoneNumber>XXXXX</md:TelephoneNumber>
   </md:ContactPerson>
</md:EntityDescriptor>

您可以有零个或多个 the standard 中定义的 KeyDescriptor 元素,所以只需继续添加新的

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

低于现有的。

尽管 XML 签名语法和处理建议(https://www.w3.org/TR/xmldsig-core/) referenced in SAML meta data spec would allow to specify several elements within the <ds:X509Data> element, the SAMLv2 interoperability profile (e.g. http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-cs-01.html,第 2.5.1 节)建议在 <md:KeyDescriptor> 元素中使用多个 <ds:KeyInfo> 元素。