Page en cours de construction. Les informations présentes peuvent présenter de légères erreurs

Utilisation de plusieurs sources de meta-données

Le chaînage de méta-données, permet d'agréger dans la configuration Shibbleth (SP et IDP) plusieurs fichiers de méta-données.

1. Configurer un IDP pour utiliser plusieurs sources de méta-données

Il est nécessaire de configurer un IDP pour utiliser plusieurs sources de méta-données dans les cas suivants :

  • IDP inscrit dans plusieurs fédérations (FER et eduGAIN)
  • IDP inscrit dans une fédération, et ayant également 1 ou plusieurs relations bilatérales

IDP v2.x

Dans le fichier relying-party.xml vous devez ajouter un élément MetadataProvider pour faire confiance aux méta-données de chaque fédération. L'ordre de configuration des méta-données est donc important : vous devez par exemple faire référence aux méta-données de la fédération Education-Recherche avant les méta-données de la fédération du CRU.

<MetadataProvider id="ShibbolethMetadata" xsi:type="ChainingMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata">
 
	<!-- Load the IdP's own metadata.  This is necessary for artifact support. -->
    <MetadataProvider id="IdPMD" xsi:type="ResourceBackedMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata" >
        <MetadataResource xsi:type="resource:FilesystemResource" file="/opt/shibboleth-idp/metadata/idp-metadata.xml" />
    </MetadataProvider>
 
    <MetadataProvider id="renaterMD" xsi:type="FileBackedHTTPMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata"
                      metadataURL="https://metadata.federation.renater.fr/renater/main/main-all-renater-metadata.xml"
                      backingFile="/opt/shibboleth-idp/metadata/main-all-renater-metadata.xml">
        <MetadataFilter xsi:type="ChainingFilter" xmlns="urn:mace:shibboleth:2.0:metadata">
            <MetadataFilter xsi:type="RequiredValidUntil" xmlns="urn:mace:shibboleth:2.0:metadata"
                            maxValidityInterval="0" />
            <MetadataFilter xsi:type="SignatureValidation" xmlns="urn:mace:shibboleth:2.0:metadata"
                            trustEngineRef="shibboleth.MetadataTrustEngine"
                            requireSignedMetadata="true" />
          <MetadataFilter xsi:type="EntityRoleWhiteList" xmlns="urn:mace:shibboleth:2.0:metadata">
                <RetainedRole>samlmd:SPSSODescriptor</RetainedRole>
            </MetadataFilter>
        </MetadataFilter>
    </MetadataProvider>
 
   <MetadataProvider id="cruMD" xsi:type="FileBackedHTTPMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata"
                      metadataURL="https://federation.cru.fr/cru/deploiement/cru-pilote-metadata.xml"
                      backingFile="/opt/shibboleth-idp/metadata/cru-pilote-metadata.xml">
        <MetadataFilter xsi:type="ChainingFilter" xmlns="urn:mace:shibboleth:2.0:metadata">
            <MetadataFilter xsi:type="RequiredValidUntil" xmlns="urn:mace:shibboleth:2.0:metadata"
                            maxValidityInterval="0" />
            <MetadataFilter xsi:type="SignatureValidation" xmlns="urn:mace:shibboleth:2.0:metadata"
                            trustEngineRef="shibboleth.MetadataTrustEngine"
                            requireSignedMetadata="true" />
          <MetadataFilter xsi:type="EntityRoleWhiteList" xmlns="urn:mace:shibboleth:2.0:metadata">
                <RetainedRole>samlmd:SPSSODescriptor</RetainedRole>
            </MetadataFilter>
        </MetadataFilter>
    </MetadataProvider>
 
</MetadataProvider>

Vous devez également ajouter un élément security:Credential pour indiquer à Shibboleth le certificat X.509 à utiliser pour vérifier la signature des méta-données. Ce certificat est téléchargeable sur le site web de la fédération, dans la page sur les méta-données.

<security:TrustEngine id="shibboleth.MetadataTrustEngine" xsi:type="security:StaticExplicitKeySignature">
    <security:Credential id="cruTestCredentials" xsi:type="security:X509Filesystem">
        <security:Certificate>/opt/shibboleth-idp/credentials/renater-metadata-signing-cert-2016.pem</security:Certificate>
    </security:Credential>
    <security:Credential id="renaterCredentials" xsi:type="security:X509Filesystem">
        <security:Certificate>/opt/shibboleth-idp/credentials/federation.cru.fr.crt</security:Certificate>
    </security:Credential>
</security:TrustEngine>

IDP v3.x

Documentation de référence : https://wiki.shibboleth.net/confluence/display/IDP30/ChainingMetadataProvider
Dans l'IDP 3, la configuration des metadata se fait dans le fichier metadata-providers.xml. Par défaut, la première balise MetadataProvider est de type ChainingMetadataProvider.
Pour chaîner des metadonnées, il suffit donc de positionner autant de blocs MetadataProvider que nécessaire dans la balise MetadataProvider de plus haut niveau.
Exemple :

metadataproviders.xml
<MetadataProvider id="ShibbolethMetadata" xsi:type="ChainingMetadataProvider" ...="...">
  <!-- Metadonnees de la fédération de test -->
  <MetadataProvider
    id="RenaterTestMetadata"
    xsi:type="FileBackedHTTPMetadataProvider"
    backingFile="%{idp.home}/metadata/preview-all-renater-test-metadata.xml"
    metadataURL="https://metadata.federation.renater.fr/test/preview/preview-all-renater-test-metadata.xml">
 
    <MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true" certificateFile="%{idp.home}/credentials/renater-metadata-signing-cert-2016.pem"></MetadataFilter>
    <MetadataFilter xsi:type="EntityRoleWhiteList">
      <RetainedRole>md:SPSSODescriptor</RetainedRole>
    </MetadataFilter>
 
  </MetadataProvider>
  <!-- Relation bilatérale -->
  <MetadataProvider id="IOP" xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/iop-metadata.xml"/>
 
</MetadataProvider>

2. Configurer un contexte applicatif d'un SP pour utiliser plusieurs sources de méta-données

Il est nécessaire de configurer un SP pour utiliser plusieurs sources de méta-données dans les cas suivants :

  • SP inscrit dans une fédération, mais autorisant les comptes CRU
  • SP inscrit dans plusieurs fédérations
  • SP inscrit dans une fédération, et ayant également 1 ou plusieurs relations bilatérales

Pour les 2 derniers cas, il faut penser à avoir un WAYF permettant de lister tous les IDPs de toutes les metadata.

SP v2.x

Dans le fichier shibboleth2.xml vous pouvez également déclarer un MetadataProvider de type “Chaining” :

shibboleth2.xml
<MetadataProvider type="Chaining">
 
  <!-- Meta-donnees de la federation Education-Recherche -->
  <MetadataProvider type="XML" uri="https://metadata.federation.renater.fr/renater/main/main-all-renater-metadata.xml"
    backingFilePath="/etc/shibboleth/main-all-renater-metadata.xml" reloadInterval="7200">
      <SignatureMetadataFilter certificate="/etc/shibboleth/renater-metadata-signing-cert-2016.pem"/>
  </MetadataProvider>
 
  <!-- Meta-donnees des comptes CRU -->
  <MetadataProvider type="XML"
      url="https://cru.renater.fr/idp/shibboleth"
      backingFilePath="/var/cache/shibboleth/sac-metadata.xml"
      reloadInterval="7200">
  </MetadataProvider>
</MetadataProvider>

SP v3.x

La configuration poour un SP3 est identique, sauf pour le changement de nom de paramètres expliqué dans ces pages :