Passage de LDAP 7.x-1.0-beta12 à 7.x-2.0-beta6

Créé le 15/03/2014

Dernière mise à jour le 19/03/2014

Étiquettes

Ce changement de version entraîne de gros changement dans l'interface de LDAP, qui est mieux pensée et plus simple en fin de compte. D'où la réécriture des tutoriels.

Utiliser LDAP+CAS pour récupérer les informations sur les utilisateurs centraliens de mon 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 ...)

Attention : ce tutoriel est dupliqué:

  • la première version concerne la version de ldap actuellement installée (7.x-1.0-beta12).
  • La deuxième version concerne la version de ldap actuellement recommandée et qui sera prochainement installée (7.x-2.0-beta6).

7.x-1.0-beta12

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

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 :

  • Machine name for this server configuration : annuaire_ECM
  • Name : annuaire_ECM
  • Cocher la case Activé
  • LDAP Server Type :  Default LDAP
  • LDAP server : ldaps://ldapr.egim-mrs.fr
  • LDAP port : 389
  • Ne pas cocher Use Start-TLS
  • Binding Method for Searches : choisissez la première option (Service Account Bind. Use credentials in following section to bind to ldap. This option is ....)
  • 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
  • Base DNs for LDAP user 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.

  • 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....'
  • Dans le groupe de champ nommé II.B. DERIVE DRUPAL ROLES BY ATTRIBUTE, cocher la case Drupal roles are specified by LDAP attributes
  • Attribute names (one per line) : supannAffectation
  • Mapping of LDAP to drupal role : remplissez ligne par ligne :
    • promo2011|Promotion 2011
    • promo2012|Promotion 2012
    • promo2013|Promotion 2013
    • promo2014|Promotion 2014
    • promo2015|Promotion 2015
  • Ajoutez en sur ce modèle pour que la fonctionnalité marche pour les autres anciennes/futures promotions
  • Cocher la case : Use LDAP group to drupal roles filtering
  • Dans le groupe IV.B. When should drupal roles be granted/revoked from user? : cochez la case When a user logs on
  • Dans le groupe IV.C. What actions would you like performed when drupal roles are granted/revoked from user?, cochez les 3 cases

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 fonctionnalité en place.

7.x-2.0-beta6

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

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 fonctionnalité en place.

Importer des utilisateurs depuis LDAP

Attention : ce tutoriel est dupliqué:

  • la première version concerne la version de ldap actuellement installée (7.x-1.0-beta12).
  • La deuxième version concerne la version de ldap actuellement recommandée et qui sera prochainement installée (7.x-2.0-beta6).

7.x-1.0-beta12

  • Activer les modules nécessaires
  • Dans Menu d'administration : Configuration > Configuration LDAP > Requêtes, ajouter une nouvelle requête (cliquer sur Add new Query) :
    • Machine name for this query configuration : promo2013 (non modifiable par la suite)
    • Nom : promo2013
    • Choisir l'annuaire LDAP
    • Cocher "activé"
    • Base DNs to search in query : ou=People,dc=egim-mrs,dc=fr
    • Filtrer : (&(objectClass=supannPerson)(eduPersonAffiliation=student)(|(supannAffectation=promo2013)(supannAffectation=promo2014)))
    • Explications : il s'agit d'une notation polonaise, les opérateurs sont en premiers, & pour ET et | pour OU, littéralement le filtre précédent signifie "objectClass=supannPerson ET eduPersonAffiliation=student ET (supannAffectation=promo2013 OU supannAffectation=promo2014)
    • Attributes to return : uid,mailLocalAddress,givenName,sn,supannAffectation
    • Size Limit of returned data : 664
    • Scope of search : ONELEVEL
    • Enregistrer
  • Dans Menu d'administration : Structure > feeds, créer un nouvel importer :
    • Nom : import 2013 (par exemple)
    • Dans paramètres de base :
      • periodic import : Désactivé
    • Extracteur : LDAP Query Fetcher
    • LDAP Query Fetcher : promo2013 (le nom au début du tuto)
    • Analyseur syntaxique : LDAP Entry Parser for Feeds
    • Processor : User processor
    • User processor : choisir si vous voulez ajouter un rôle aux utilisateurs que vous allez importer
    • Mapping (dans les sources, ne pas mettre de majuscule) :
Source Target
uid User name (unique)
maillocaladdress Adresse de courriel (unique)
sn nom
givenname prenom
supannaffectation promotion

Pour éviter des problèmes, dans Menu d'administration : Configuration > Configuration LDAP > Autorisation > modifier, décocher la case tout en bas Create drupal roles if they do not exist.

Cela permettra d'éviter que plein de rôles non paramètrés soient créés.

Dans Navigation > importer, choisir l'import, puis importer.

Normalement les utilisateurs ont été créés.

Enjoy ! :)

7.x-2.0-beta6

  • Activer les modules nécessaires
  • Dans Menu d'administration : Configuration > Configuration LDAP > Requêtes, ajouter une nouvelle requête (cliquer sur Add new Query) :
    • Basic LDAP Query Settings :
      • Machine name for this query configuration : promo2013 (non modifiable par la suite)
      • Nom : promo2013
      • Choisir l'annuaire LDAP
      • Cocher "Enabled"
    • Query :
      • Base DNs to search in query : ou=People,dc=egim-mrs,dc=fr
      • Filter : (&(objectClass=supannPerson)(eduPersonAffiliation=student)(|(supannAffectation=promo2013)(supannAffectation=promo2014)))
        • Explications : il s'agit d'une notation polonaise, les opérateurs sont en premiers, & pour ET et | pour OU, littéralement le filtre précédent signifie "objectClass=supannPerson ET eduPersonAffiliation=student ET (supannAffectation=promo2013 OU supannAffectation=promo2014)
      • Attributes to return : uid,mailLocalAddress,givenName,sn,supannAffectation
    • Advanced Query Settings :
      • Size Limit of returned data : 664
      • Scope of search : ONELEVEL
    • Enregistrer
  • Dans Menu d'administration : Structure > feeds, créer un nouvel importer :
    • Nom : import 2013 (par exemple)
    • Dans paramètres de base :
      • periodic import : Désactivé
    • Extracteur : LDAP Query Fetcher
    • LDAP Query Fetcher : promo2013 (le nom au début du tuto)
    • Analyseur syntaxique : LDAP Entry Parser for Feeds
    • Processor : User processor
    • User processor : choisir si vous voulez ajouter un rôle aux utilisateurs que vous allez importer
    • Mapping (dans les sources, ne pas mettre de majuscule) :
Source Target
uid User name (unique)
mailLocalAddress Adresse de courriel (unique)
sn nom
givenname prenom
supannaffectation promotion

Pour éviter des problèmes, dans Menu d'administration : Configuration > People > Configuration LDAP > Autorisation > modifier, décocher la case tout en bas Create drupal roles if they do not exist.

Cela permettra d'éviter que plein de rôles non paramètrés soient créés.

Dans Navigation > importer, choisir l'import, puis importer.

Normalement les utilisateurs ont été créés.

Enjoy ! :)

Ajouter un commentaire