Accueil   >  Certificats de personne standards   >  Spécifications de configuration
Vendredi 16 Nov. 2018 - 18:48

Spécifications de configuration

 

Le service TCS certificats de personnes (standards) est opéré sur un portail européen :

- URL d’accès : https://tcs-personal-portal.terena.org/
- Identifiant du SP

Attention : Tout établissement enregistré dans la fédération Éducation-Recherche est par défaut présent dans le menu déroulant des fournisseurs d’identités (IdP) du portail. Dans ce menu, chaque établissement est identifié par l’entityID de son fournisseur d’identités. Être présent dans le menu déroulant ne suffit pas pour que le service soit accessible, en effet il est impératif qu’au préalable la démarche de souscription administrative soit faite (voir détails ici).

Une fois l’établissement inscrit au service, l’administrateur du fournisseur d’identités doit le configurer pour gérer l’autorisation des utilisateurs.

Le portail gère les autorisations et se personnalise en consommant un sous-ensemble des attributs disponibles dans l’annuaire de l’établissement :

1. eduPersonPrincipalName = identifiant unique au niveau national
2. DisplayName = Nom et prénom de la personne
3. Organisation = établissement référençant cette personne
4. Email = adresse email canonique de la personne fournie par l’établissement
5. eduPersonEntitlement = attribut généré dynamiquement à la connexion qui définit le rôle de chaque utilisateur (un des trois rôles vus ci-dessous)

L’attribut eduPersonEntitlement

Voir la définition de cet attribut ici et ici.

Comment le positionner ?

Cet attribut est en général positionné si les valeurs d’un ou de plusieurs attributs présents dans l’annuaire de l’établissement sont conformes à :

1. la personne est gérée administrativement par l’établissement souscripteur

2. l’identité de la personne a été vérifiée lors de sa prise de fonction dans l’établissement (de visu, présentation d’une pièce d’identité)

Les deux valeurs possibles pour cet attribut sont :

1. urn:mace:terena.org:tcs:personal-user

2. urn:mace:terena.org:tcs:personal-admin


Comment le générer ?

Cet attribut peut être multivalué et permet donc selon les valeurs des autres attributs + la sienne d’endosser tel ou tel rôle.

Pour le générer il faut éditer le fichier attribute-resolver.xml de son IdP. Voici un exemple qui positionne l’entitlement à :
- urn:mace:terena.org:tcs:personal-user
- pour toute personne membre de l’établissement
- urn:mace:terena.org:tcs:personal-user et urn:mace:terena.org:tcs:personal-admin
- pour Jean Dupont, responsable technique du service auprès de l’établissement

Pour rappel, pour générer cet attribut, il suffit de se baser sur un autre attribut de l’annuaire de l’établissement qui discrimine la population autorisée à utiliser le service. Ici dans cet exemple, on s’appuie sur l’attribut eduPersonAffiliation avec la valeur “Membre”.

Éditer le fichier attribute-resolver.xml :

<!-- eduPersonEntitlement -->
  <resolver:AttributeDefinition id="eduPersonEntitlement" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" >
     <resolver:Dependency ref="etablissementLDAP" />
        <resolver:Dependency ref="eduPersonAffiliation" />
       <resolver:Dependency ref="email" />

       <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
           name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
       <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
           name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />

    <Script>
     <![CDATA[  
       importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
            eduPersonEntitlement = new BasicAttribute("eduPersonEntitlement");


            if (eduPersonAffiliation != null && email != null && requestContext.getPeerEntityId() =="https://tcs-personal-portal.terena.org/simplesamlphp/module.php/saml/sp/metadata.php/default-sp") {

                if (eduPersonAffiliation.getValues().get(0).match("member")) {
                        eduPersonEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-user");
                }//if

                if (email.getValues().get(0).match("^jean.dupont@etablissement.fr$")) {
                        eduPersonEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-admin");
                }//if

            }//IF
            else eduPersonEntitlement.getValues().add("");
     ]]>
   </Script>

 </resolver:AttributeDefinition>

 ...

 <!-- connecteur LDAP de l'établissement -->
 <resolver:DataConnector id="etablissementLDAP" xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
                            ldapURL="ldap://ldap.etablissement.fr" baseDN="ou=people,dc=etablissement,dc=fr" principal=""
                            principalCredential="">
       <FilterTemplate>
           <![CDATA[
               (uid=$requestContext.principalName)
           ]]>
       </FilterTemplate>
   </resolver:DataConnector>