Configurer un IdP capable de transmettre l'Identifiant Étudiant Européen (ESI)

Cette fiche technique décrit comment configurer un fournisseur d'identités (appelé plus succinctement IDP dans la suite de ce document) pour transmettre l'Identifiant Étudiant Européen ou ESI via l'attribut SchacPersonalUniqueCode, conformément à la spécification en vigueur pour cet identifiant.

Elle est destinée à l'administrateur technique d'un IDP Shibboleth en version 2.3.4 (ou supérieure).

Afin de pouvoir appliquer cette fiche technique, il est au préalable nécessaire que :

  • Une règle de production pour l'attribut SchacPersonalUniqueCode ait été définie au niveau de l'IDP (dans le fichier attribute-resolver.xml), à l'instar de celle présentée en exemple ci-dessous :
<!-- Définition de l'ESI (attribut schacPersonalUniqueCode) -->
<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Template">
    <InputDataConnector ref="myLDAP" attributeNames="supannCodeINE" />
    <DisplayName xml:lang="fr">Identifiant Etudiant Européen (ESI)</DisplayName>
    <DisplayName xml:lang="en">European Student Identifier (ESI)</DisplayName>
    <Template>urn:schac:personalUniqueCode:int:esi:fr:${supannCodeINE}</Template>
    <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:schacPersonalUniqueCode" encodeType="false"/>
    <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false" />
</AttributeDefinition>

Un fournisseur de service (SP) ayant besoin de recevoir l'Identifiant Étudiant Européen (ESI) doit aujourd'hui :

  1. Demander explicitement l'attribut schacPersonalUniqueCode ;
  2. Se déclarer conforme à la spécification ESI, c'est-à-dire présenter un tag spécifique dans ses métadonnées signalant que l'attribut schacPersonalUniqueCode véhicule une valeur d'ESI.
Attention: Du fait de sa récente mise en œuvre, il est possible que la spécification ESI ne soit pas encore adoptée par l'ensemble des fournisseurs de service à l'échelle européenne et que certains ne disposent pas encore du tag ESI dans leurs métadonnées.

Afin de garantir une couverture complète côté IdP, il est donc nécessaire de configurer une politique permettant de renvoyer l'ESI à l'ensemble des services labellisés ESI (présentant le tag), tout en laissant la possibilité le cas échéant d'y ajouter des exceptions (services ayant besoin de recevoir l'ESI mais ne disposant pas encore du tag).

Cette approche combinatoire est illustrée par l'exemple ci-dessous (fichier attribute-resolver.xml):

<!-- Diffusion de l'ESI aux services labellisés ESI ou à des services spécifiés explicitement -->
<AttributeFilterPolicy id="ReleaseESItoAnyServices">
     <PolicyRequirementRule xsi:type="AND">
          <Rule xsi:type="OR">
                <!-- Tout SP conforme à la spécification ESI, cad présentant un tag ESI dans ses métadonnées -->
               <Rule xsi:type="EntityAttributeExactMatch" attributeName="http://macedir.org/entity-category" attributeValue="https://myacademicid.org/entity-categories/esi" />
               <!-- ou ce SP en particulier (s'il ne dispose pas du tag) -->
               <Rule xsi:type="Requester" value="https://test-sp.federation.renater.fr" />
          </Rule>
          <!-- Diffusion uniquement pour la population étudiante -->
          <Rule xsi:type="Value" attributeID="eduPersonAffiliation" value="student" />
     </PolicyRequirementRule>
     <!-- L'attribut schacPersonalUniqueCode contenant la valeur d'ESI est renvoyé-->
     <AttributeRule attributeID="schacPersonalUniqueCode">
          <PermitValueRule xsi:type="ValueRegex" regex="^urn:schac:personalUniqueCode:int:esi:.*$" />
     </AttributeRule>
</AttributeFilterPolicy>
  • Dernière modification : 2022/03/16 10:27