Utiliser CAS(+LDAP si besoin) pour récupérer les informations sur les utilisateurs centraliens de mon site

Contributeurs

Statut du tutoriel : 

À jour

Catégorie du tutoriel : 

Niveau du tutoriel : 

Modules utilisés : 

Vous avez suivi le didacticiel sur l'installation et la configuration du module CAS et désormais les centraliens peuvent se connecter à votre site.

Ce didacticiel vous propose deux fonctionnalités :

  1. à l'authentification d'un nouvel utilisateur via CAS, récupérer son nom, prénom, adresse mail, promotion et ajouter automatiquement ces informations à son profil utilisateur
  2. à l'authentification d'un utilisateur via CAS, créer automatiquement un rôle drupal pour sa promotion si ce rôle n'existe pas encore, et sinon ajouter l'utilisateur directement au rôle drupal de sa promotion (ceci servira donc pour définir des droits d'accès par promotion ...)

Ce tuto existe en deux versions qui donnent les mêmes fonctionnalités : la première utilise uniquement le module CAS, est plus simple mais ne peut pas créer de rôles automatiquement. La seconde est plus complexe mais un peu plus flexible. Nous vous recommandons la première si elle vous suffit.

Version CAS seulement

Pensez à activer les modules "CAS" et "CAS Attribute Tokens".

Comme dans l'autre version, il faut avoir les 3 champs nom, prénom et promotion sur les comptes utilisateurs.

Allez dans Menu d’administration : Configuration > Personnes > Paramètres de CAS. Choisir la version "SAML Version 1.1"

Allez dans Menu d’administration : Configuration > Personnes > Paramètres de CAS > Attributs. Remplissez comme suit :

  • Fetch CAS Attributes : only when a CAS account is created
  • Overwrite existing values : only store data from attributes for fields that are empty (don't overwrite user fields that already have data).
  • Nom d'utilisateur : [cas:attribute:uid]
  • Adresse de courriel : [cas:attribute:mail]
  • Nom : [cas:attribute:sn]
  • Prénom : [cas:attribute:givenname]
  • Promotion : [cas:attribute:supannaffectation]
  • Role mapping : Vous choisissez les rôles qui peuvent être attribués/retirez. Si le contenu d'un des champs correspondant à un nom de rôle, le rôle est ajouté. Sinon, il est retiré. Remplissez comme suit (la casse est importante) :
    • Roles to manage : cochez les rôles pouvant être attribués
    • Attributs : supannAffectation

Enregistrer la configuration.

Vous pouvez même voir les autres attributs CAS disponibles sur la page Menu d’administration : Configuration > Personnes > Paramètres de CAS > Attributs > Jetons CAS attributes.

Récupérer les informations d’un utilisateur CAS avec LDAP

Normalement vous avez déjà le module CAS actif. Activez en plus les modules : "LDAP Servers", "CAS Attribute Tokens" et "CAS LDAP Tokens"

Allez dans Menu d’administration : Configuration > Personnes > LDAP Configuration. Dans l’onglet Serveurs, puis ajoutez un nouveau serveur avec les paramètres suivants :

  • Connection settings :
    • Machine name for this server configuration : annuaire_ECM
    • Name : annuaire_ECM
    • Cocher la case Enabled
    • LDAP Server Type : Default LDAP
    • LDAP server : ldaps://ldapr.egim-mrs.fr
    • LDAP port : 389
    • Ne pas cocher Use Start-TLS
  • Binding Method
    • Binding Method for Searches (such as finding user object or their group memberships) : Choisir le premier choix : Service Account Bind: Use credentials in the Service Account field to bind to LDAP. This option is usually a best practice.
    • DN for non-anonymous search : cn=drupalassos,ou=ldapusers,dc=egim-mrs,dc=fr
    • Password for non-anonymous search : envoyez un mail  à assos [AT] centrale-marseille [POINT] fr, ou encore au CRI pour avoir ce mot de passe
    • Cocher : Clear existing password from database. Check this when switching away from service account binding
  • LDAP User to Drupal User Relationship
    • Base DNs for LDAP users, groups, and other entries : ou=People,dc=egim-mrs,dc=fr
    • AuthName attribute : uid
    • Email attribute : mailLocalAddress

Enregistrer la configuration

Aller dans Menu d’administration : Configuration > Personnes > Paramètre de comptes > Gérer les champs
Ajouter 3 champs : Nom, Prenom et Promotion

Aller à admin/config/people/cas/attributes. Remplissez comme suit :

  • Fetch CAS Attributes : only when a CAS account is created
  • Server : annuaire_ECM
  • Nom d'utilisateur : [cas:ldap:uid]
  • Adresse de courriel : [cas:ldap:maillocaladdress]
  • Nom : [cas:ldap:sn]
  • Prenom : [cas:ldap:givenname]
  • Promotion : [cas:ldap:supannaffectation]
Enregistrer la configuration

Si un utilisateur se connecte via CAS on aura alors tous ces champs de son profil renseignés automatiquement.

Créer un rôle par promotion

Activer les modules : "LDAP Authorization" et "LDAP Authorization - Drupal Roles".

Aller dans Menu d’administration : Configuration > Personnes > LDAP Configuration onglet Authorization. Cliquer sur add.

  • I. Basics :
    • LDAP Server used in drupal role configuration : choisir annuaire_ECM
    • Cocher la case 'Enable this configuration'
    • Ne pas cocher la case 'Only apply the following LDAP to drupal role configuration to users authenticated via LDAP....'
  • II. LDAP to drupal role mapping and filtering :
    • cocher la case 'Convert full dn to value of first attribute before mapping. e.g.  cn=students,ou=groups,dc=hogwarts,dc=edu would be converted to students'.
    • Mapping of LDAP to drupal role (one per line) : promo2013|Promotion 2013
    • Ajoutez en sur ce modèle pour que la fonctionnalité marche pour les autres anciennes/futures promotions
    • cocher la case 'Only grant drupal roles that match a filter above.'
  • Part III. Even More Settings :
    • Laisser toutes les cases cochées.

Enregistrer la configuration

Allez dans Menu d’administration : Configuration > Personnes > LDAP Configuration. Dans l’onglet Serveurs, éditez le serveur de la première partie de ce tutoriel :

  • LDAP Group Configuration :
    • Name of Group Object Class : supannperson
    • Cocher la case 'A user LDAP attribute such as memberOf exists that contains a list of their groups. Active Directory and openLdap with memberOf overlay fit this model.'
    • Attribute in User Entry Containing Groups : supannaffectation
    • User attribute held in "LDAP Group Entry Attribute Holding..." : supannaffectation

Enregistrer la configuration.

Si un utilisateur se connecte maintenant via CAS et qu'il fait partie de la promotion 2014 alors, si le rôle Drupal 'Promotion 2014' n'existait pas ; il sera créé et ce rôle sera rajouté à la liste des rôle de l'utilisateur'  ; et si ce rôle existait déjà, l'utilisateur se verra ajouter ce rôle.

Bien évidement la bonne pratique consiste à d'abord créer ces rôles à la main dans admin/people/permissions/roles et de configurer leurs droits puis mettre cette fonctionnallité en place.