Configurer un IdP pour générer des attributs utilisateur

1. Principe

La génération des attributs repose sur deux mécanismes distincts:

  • des règles d'extraction décrivent comment produire les valeurs relatives aux attributs utilisateurs depuis un ou plusieurs référentiels locaux, indépendamment du protocole utilisé
  • des règles de formatage décrivent comment présenter ces valeurs en fonction du protocole utilisé, indépendamment de la configuration locale

Jusqu'à la version 4.x, ces deux fonctions sont assurées par des composants logiciels distincts, le résolveur d'attribut pour la partie spécifique, et le registre d'attributs pour la partie générique. Dans les versions précédentes, le registre d'attributs n'existait pas, et le résolveur remplissait les deux fonctions.

le même composant logiciel, le résolveur d'attribut, remplissait les deux fonctions. Depuis cette version, ce composant n'assure plus que la partie spécifique, et la partie générique est maintenant assurée par un nouveau composant logiciel, le registre d'attributs.

2. Extraction des attributs

Les règles de productions, définies dans l'ensemble des fichiers énumérés pour le composant d'identifiant shibboleth.AttributeResolverResources dans le fichier services.xml (par défaut: attribute-resolver.xml), décrivent la façon dont chaque attribut utilisateur est produit, à partir de sources de données (DataConnector) et de définition d'attributs (AttributeDefinition) qui y font référence.

Le fichier ci-dessous montre comment produire trois attributs mail, uid, eduPersonPrincipalName, avec des valeurs issues d'un annuaire LDAP, grace à une première source de données, et un attribut schacHomeOrganization à partir d'un second connecteur de données. Attention, il ne s'agit que d'un exemple, à adapter à votre cas.

/opt/shibboleth-idp/conf/attribute-resolver.xml
<?xml version="1.0" encoding="UTF-8"?>
 
<AttributeResolver
    xmlns="urn:mace:shibboleth:2.0:resolver"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
    <!-- définitions d'attributs -->
 
    <AttributeDefinition id="uid" xsi:type="Simple" >
        <InputDataConnector ref="myLDAP" attributeNames="uid"/>
    </AttributeDefinition>
 
    <AttributeDefinition id="mail" xsi:type="Simple" >
        <InputDataConnector ref="myLDAP" attributeNames="mail"/>
    </AttributeDefinition>
 
    <AttributeDefinition id="eduPersonPrincipalName" xsi:type="Scoped" scope="%{idp.scope}">
        <InputDataConnector ref="myLDAP" attributeNames="uid" />
    </AttributeDefinition>
 
    <AttributeDefinition id="schacHomeOrganization" xsi:type="Simple">
        <InputDataConnector ref="staticAttributes" attributeNames="schacHomeOrganization" />
    </AttributeDefinition>
 
    <!-- Sources de données -->
 
    <DataConnector id="myLDAP" xsi:type="LDAPDirectory"
        ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
        baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
        principal="%{idp.attribute.resolver.LDAP.bindDN}"
        principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
        useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS}"
        trustFile="%{idp.attribute.resolver.LDAP.trustCertificates}">
        <FilterTemplate>
            <![CDATA[
                %{idp.attribute.resolver.LDAP.searchFilter}
            ]]>
        </FilterTemplate>
    </DataConnector>
 
    <DataConnector id="staticAttributes" xsi:type="Static">
        <Attribute id="schacHomeOrganization">
            <Value>domain.tld</Value>
        </Attribute>
    </DataConnector>
 
</AttributeResolver>

3. Formatage des attributs

Les règles de formatage, définies dans l'ensemble des fichiers énumérés pour le composant d'identifiant shibboleth.AttributeRegistryResources dans le fichier services.xml (par défaut: attribute-registry.xml, ),

L'ensemble des fichiers du répertoire conf/attributes constitue le registre d'attributs, et décrivent comment représenter les différents attributs, en fonction du protocole (SAML1, SAML2, OIDC, …). La configuration par défaut correspond aux attributs standards au niveau international, et il est possible de l'étendre.

C'est notamment nécessaire pour les attributs supAnn, qui sont inconnus en dehors de la communauté française. Le fichier ci-dessous montre comment faire le nécessaire.

/opt/shibboleth-idp/conf/conf/attributes/supann.xml
<?xml version="1.0" encoding="UTF-8"?>
 
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
 
       default-init-method="initialize"
       default-destroy-method="destroy">
 
    <!-- https://services.renater.fr/documentation/supann/index -->
 
    <bean parent="shibboleth.TranscodingRuleLoader">
        <constructor-arg>
            <list>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannListeRouge</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.1</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannListeRouge</prop>
                            <prop key="description.fr">Témoin de non-visibilité de la personne dans l'annuaire public</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannActivite</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.2</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannActivite</prop>
                            <prop key="description.fr">Catégorie de métier, branche d'activité</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCivilite</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.4</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCivilite</prop>
                            <prop key="displayname.fr">Civilité</prop>
                            <prop key="description.fr">Civilité</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannAffectation</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.5</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannAffectation</prop>
                            <prop key="description.fr">Obsolète dans SupAnn 2008, il est préférable d'utiliser supannEntiteAffectation</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCodeEntite</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.6</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCodeEntite</prop>
                            <prop key="description.fr">Identifiant d'une entité</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCodeEntiteParent</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.7</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCodeEntiteParent</prop>
                            <prop key="description.fr">Liste des supannCodeEntite des entités de niveau immédiatement supérieur à l'objet courant</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEntiteAffectation</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.8</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEntiteAffectation</prop>
                            <prop key="displayName.fr">Entité d'affectation</prop>
                            <prop key="description.fr">Affectations de la personne dans un établissement, une composante, service, etc.</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCodeINE</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.9</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCodeINE</prop>
                            <prop key="description.fr">Code INE pour les étudiants</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuId</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.10</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuId</prop>
                            <prop key="description.fr">Identifiant de scolarité</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEmpId</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.11</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEmpId</prop>
                            <prop key="displayName.fr">Identifiant d'employé</prop>
                            <prop key="description.fr">Identifiant de l'employé dans le logiciel de gestion du personnel de l'établissement</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannAutreTelephone</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.12</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannAutreTelephone</prop>
                            <prop key="description.fr">Autres téléphones</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEntiteAffectationPrincipale</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.13</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEntiteAffectationPrincipale</prop>
                            <prop key="displayName.fr">Entité principale d'affectation</prop>
                            <prop key="description.fr">Affectation principale de la personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtablissement</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.14</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtablissement</prop>
                            <prop key="displayName.fr">Code établissement</prop>
                            <prop key="description.fr">Etablissement (ou unité) de rattachement administratif de la personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannMailPerso</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.15</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannMailPerso</prop>
                            <prop key="description.fr">Adresse de courrier électronique privée</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannTypeEntite</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.16</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannTypeEntite</prop>
                            <prop key="description.fr">Type de l'entité : composante, service commun, UFR, service central, instance élective, etc.</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannAliasLogin</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.20</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannAliasLogin</prop>
                            <prop key="description.fr">Identifiant de connexion alternatif modifiable d'une personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannRoleGenerique</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.23</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannRoleGenerique</prop>
                            <prop key="displayName.fr">Rôle générique</prop>
                            <prop key="description.fr">Rôle(s) générique(s) de la personne dans l'établissement</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannRoleEntite</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.24</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannRoleEntite</prop>
                            <prop key="description.fr">Rôle contextuel (relatif à une entité donnée). Rôle pouvant être structurel, électif, etc.</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuAnneeInscription</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.25</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuAnneeInscription</prop>
                            <prop key="description.fr">Année de début de l'année universitaire concernée</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuCursusAnnee</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.26</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuCursusAnnee</prop>
                            <prop key="description.fr">Type de cursus (L, M, D ou X...) ainsi que l'année dans le diplôme</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuDiplome</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.27</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuDiplome</prop>
                            <prop key="description.fr">Diplôme préparé par l'étudiant</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuElementPedagogique</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.28</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuElementPedagogique</prop>
                            <prop key="description.fr">Description générique du contenu d'un enseignement avec un fort niveau de granularité</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuEtape</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.29</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuEtape</prop>
                            <prop key="description.fr">L'étape peut être considérée comme un fractionnement (semestre, année, etc.) dans le temps d'un enseignement conduisant à un diplôme</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuInscription</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.30</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuInscription</prop>
                            <prop key="description.fr">Chaque valeur de cet attribut composite décrit une inscription pour un étudiant en liant entre elles des informations 'élémentaires' (discipline, diplôme, établissement, etc.)</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuRegimeInscription</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.31</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuRegimeInscription</prop>
                            <prop key="description.fr">Correspond au 'type d'enseignement' SISE dont les valeurs possibles sont : formation initiale, formation continue, formation à distance, etc.</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuSecteurDisciplinaire</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.32</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuSecteurDisciplinaire</prop>
                            <prop key="description.fr">Secteur disciplinaire de diplôme ou d'enseignement</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuTypeDiplome</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.33</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuTypeDiplome</prop>
                            <prop key="description.fr">Type ou catégorie du diplôme préparé</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannAutreMail</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.34</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannAutreMail</prop>
                            <prop key="displayName.en">Other email addresses</prop>
                            <prop key="displayName.fr">Autre(s) emails</prop>
                            <prop key="description.fr">Adresses de courrier électronique secondaires</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEmpCorps</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.35</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEmpCorps</prop>
                            <prop key="description.fr">Corps d'appartenance d'un agent</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannTypeEntiteAffectation</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.36</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannTypeEntiteAffectation</prop>
                            <prop key="description.fr">Type de la ou des entités d'affectation d'une personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannRefId</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.37</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannRefId</prop>
                            <prop key="description.fr">Identifiants/liens avec d'autres bases du SI</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannNomDeNaissance</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.38</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannNomDeNaissance</prop>
                            <prop key="description.fr">Nom de famille de naissance de la personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannPrenomsEtatCivil</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.39</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannPrenomsEtatCivil</prop>
                            <prop key="description.fr">Prénoms de la personne figurant sur l'état civil</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannOIDCDateDeNaissance</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.40</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannOIDCDateDeNaissance</prop>
                            <prop key="description.fr">Date de naissance au format «AAAA-MM-JJ»</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannOIDCGenre</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.41</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannOIDCGenre</prop>
                            <prop key="description.fr">Genre de la personne : “female”, “male” ou “other”</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCodeINSEEVilleDeNaissance</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.42</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCodeINSEEVilleDeNaissance</prop>
                            <prop key="description.fr">Code INSEE de la commune de naissance</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCodeINSEEPaysDeNaissance</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.43</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCodeINSEEPaysDeNaissance</prop>
                            <prop key="description.fr">Code INSEE du pays de naissance de la personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannFCSub</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.44</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannFCSub</prop>
                            <prop key="description.fr">Identifiant ciblé de personne France Connect (“sub”)</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSAffectation</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.45</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSAffectation</prop>
                            <prop key="description.fr">Affectation d'une carte multi-services</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSAppAffectation</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.46</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSAppAffectation</prop>
                            <prop key="description.fr">Affectation d'un identifiant applicatif embarqué sur une carte multi-services</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSAppId</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.47</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSAppId</prop>
                            <prop key="description.fr">Identifiant applicatif embarqué dans une carte multi-services</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSAppIdDomaine</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.48</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSAppIdDomaine</prop>
                            <prop key="description.fr">Identifiant applicatif embarqué dans une carte multi-services avec domaine</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSDateFin</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.49</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSDateFin</prop>
                            <prop key="description.fr">Date de fin de validité d'une carte multi-services ou d'une application embarquée</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSId</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.50</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSId</prop>
                            <prop key="description.fr">Identifiant physique d'une carte multi-services</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSIdEtiquette</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.51</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSIdEtiquette</prop>
                            <prop key="description.fr">Identifiant physique d'une carte multi-services, avec étiquette</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSType</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.52</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSType</prop>
                            <prop key="description.fr">Type d'une carte multi-services</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCMSSource</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.53</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCMSSource</prop>
                            <prop key="description.fr">Identifiant d’un système de gestion des cartes, avec son établissement.</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannRessourceEtatDate</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.54</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannRessourceEtatDate</prop>
                            <prop key="description.fr">Etat et dates de validité d'un compte ou d'une ressource associée à une personne</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannRessourceEtat</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.55</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannRessourceEtat</prop>
                            <prop key="description.fr">Etat de validité d'une ressource ou d'un compte</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEmpProfil</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.56</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEmpProfil</prop>
                            <prop key="description.fr">Attribut composite décrivant les profils détaillés d'une personne ressource</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannExtProfil</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.57</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannExtProfil</prop>
                            <prop key="description.fr">Attribut composite décrivant les profils détaillés d'une personne externe</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannCodePopulation</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.58</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannCodePopulation</prop>
                            <prop key="description.fr">Code identifiant une catégorie de population</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEmpDateFin</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.59</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEmpDateFin</prop>
                            <prop key="description.fr">Date de fin de validité d'un profil de personne ressource</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannEtuDateFin</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.60</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannEtuDateFin</prop>
                            <prop key="description.fr">Date de fin de validité d'un profil d'apprenant</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannExtDateFin</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.61</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannExtDateFin</prop>
                            <prop key="description.fr">Date de fin de validité d'un profil d'externe</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannConsentement</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.62</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannConsentement</prop>
                            <prop key="description.fr">Consentements de l'utilisateur</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannAdressePostalePrivee</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.63</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannAdressePostalePrivee</prop>
                            <prop key="description.fr">Adresses postales privées de l'utilisateur</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannTelephonePrive</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.64</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannTelephonePrive</prop>
                            <prop key="description.fr">Numéros de téléphone privés de l'utilisateur</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">supannMailPrive</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:1.3.6.1.4.1.7135.1.2.1.65</prop>
                            <prop key="saml1.name">urn:mace:cru.fr:attribute-def:supannMailPrive</prop>
                            <prop key="description.fr">Adresses courriel privées de l'utilisateur</prop>
                        </props>
                    </property>
                </bean>
 
                <bean parent="shibboleth.TranscodingProperties">
                    <property name="properties">
                        <props merge="true">
                            <prop key="id">mailForwardingAddress</prop>
                            <prop key="transcoder">SAML2StringTranscoder SAML1StringTranscoder</prop>
                            <prop key="saml2.name">urn:oid:2.16.840.1.113730.3.1.17</prop>
                            <prop key="saml1.name">urn:mace:dir:attribute-def:mailForwardingAddress</prop>
                            <prop key="displayName.en">Mail Forwarding Address</prop>
                            <prop key="displayName.fr">Adresse email de renvoi</prop>
                            <prop key="description.en">Netscape Messaging Server 4.x defined attribute</prop>
                            <prop key="description.fr">Adresse email de renvoi de courrier électronique reçu sur l'adresse institutionnelle</prop>
                        </props>
                    </property>
                </bean>
 
            </list>
        </constructor-arg>
    </bean>
 
</beans>

4. Plus d'information