【问题标题】:Multiple certificate in SAML metadata xml fileSAML 元数据 xml 文件中的多个证书
【发布时间】:2024-01-11 13:37:01
【问题描述】:

我在我的应用程序中使用 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>

【问题讨论】:

    标签: ssl single-sign-on saml-2.0 digital-certificate


    【解决方案1】:

    您可以拥有零个或多个 KeyDescriptor 元素,如 the standard 中定义的那样,所以继续添加一个新的

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

    低于现有的。

    【讨论】:

      【解决方案2】:

      尽管 SAML 元数据规范中引用的 XML 签名语法和处理建议 (https://www.w3.org/TR/xmldsig-core/) 允许在 &lt;ds:X509Data&gt; 元素中指定多个元素,但 SAMLv2 互操作性配置文件(例如 http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-cs-01.html,第 2.5.1 节)建议在&lt;md:KeyDescriptor&gt; 元素中使用多个&lt;ds:KeyInfo&gt; 元素。

      【讨论】:

      • 我可以在元数据文件中有多个&lt;X509Certificate&gt;标签吗?
      • 根据 XML 签名语法和处理建议,这是允许的,但大多数 SAML SP/IdP 不支持这一点,因为它们大多遵循 SAMLv2 互操作性配置文件中给出的建议,例如bugster.forgerock.org/jira/browse/OPENAM-10330
      最近更新 更多