Configurer les attributs subject-id et pairwise-id

Les attributs Subject-ID

Les attributs Subject-ID, sont des attributs SAML normalisés par les consortium OASIS.
Leur but est de simplifier la gestion et la diffusion d'identifiants, et de remplacer les 2 attributs obsolètes eduPersonUniqueID et eduPersonTargetedID. Ils sont au nombre de 2 :

  • subjectId : identifiant unique, opaque, dont la valeur ne change pas, quelque soit le service accédé ;
  • pairwiseId : identifiant unique, opaque, dont la valeur est différente pour chaque service accédé.


Les propriétés de ces attributs sont synthétisées dans le tableau ci-dessous :

Attribut Valeur Ré-assignable Ciblé Sensible à la casse
subjectId idm123456789@univ-xyz.fr non non non
pairwiseId ZTME3TMNBXGYYTIOBYGMY@univ-xyz.fr non oui non

Génération de ces attributs par l'IdP Shibboleth

Les indications données ici s'appliquent avec un IdP 4.1 ou supérieur.

Configuration de l'Attribute Resolver

La configuration que nous vous proposons est la suivante :

  • subjectId : concaténation d'un attribut de votre annuaire avec le scope de votre IdP
  • pairwiseId : utilisation d'un générateur d'identifiant - sans persistence en base de données - concaténé avec le scope de votre établissement


Avant de configurer, il faut bien identifier quel attribut de votre annuaire peut être utilisé pour le subjectId. Celui-ci doit être :

  • Non réassignable : une valeur donnée ne doit jamais être affectée à un autre utilisateur ;
  • Persistent : il ne changera jamais pour un même utilisateur.

Dans cette fiche technique, nous allons utiliser l'uid.
Sauf paramétrage spécifique de votre IdP, la résolution d'attribut est configurée dans le fichier /opt/shibboleth-idp/conf/attribute-resolver.xml.

/opt/shibboleth-idp/conf/attribute-resolver.xml
<!--
DataConnector for pairwise-id
-->
<DataConnector id="computed" xsi:type="ComputedId"
    excludeResolutionPhases="c14n/attribute"
    generatedAttributeID="computedId"
    salt="%{idp.persistentId.salt}"
    algorithm="%{idp.persistentId.algorithm:SHA}"
    encoding="BASE32">
 
    <InputDataConnector ref="myLDAP" attributeNames="%{idp.persistentId.sourceAttribute}" />
 
</DataConnector>
 
<!-- Schema: SAML Subject ID attributes -->
 
<AttributeDefinition id="samlPairwiseID" xsi:type="Scoped" scope="%{idp.scope}">
    <InputDataConnector ref="computed" attributeNames="computedId" />
</AttributeDefinition>
 
<AttributeDefinition id="samlSubjectID" xsi:type="Scoped" scope="%{idp.scope}">
    <InputAttributeDefinition ref="uid" />
</AttributeDefinition>

Configuration de l'Attribute Registry

L'Attribute Registry est la partie de l'IdP chargé d'encoder les attributs, au format SAML, avant des les transmettre au SP.
Normalement, un IdP 4.1+ est déjà en mesure d'encodes ces attributs. La configuration se situe par défaut dans le fichier /opt/shibboleth-idp/conf/attributes/samlSubject.xml.

Configuration de l'Attribute Filter

La configuration de l'Attribute Filter pour les attributs subject-id est décrite ici.