L'annuaire Active Directory (AD) permet la gestion des comptes d'utilisateurs et d'ordinateurs de l'université.
Pour les applications qui proposent une authentification auprès d'annuaires LDAP et pour lesquelles une authentification CAS n'est pas possible, l'AD de l'université est particulièrement adapté et permet l'authentification des personnels, des étudiants et des intervenants extérieurs.
Dans cette page : |
Type de compte | Convention de nommage | Nom de l’OU |
Invité | invite_prenom.nom | Utilisateurs_invite |
test | test_prenom.nom ou test_application | Systeme |
Administrateur système | sys_prenom.nom | Systeme |
Application | svc_application | Systeme |
Convention de nommage du groupe | Exemple |
Plus-grosse-entité.moins-grosse-entité.petite-entité
| DSF.service-marche.responsables LYONEST.Scol.Modifieurs (ou lecteurs) DSI.support nautibus.liris.prof |
Application.entite.role | TERA.DRH.admin TERA.DSF AD.DSI.admin |
Compte utilisateur | majuscules, minuscules (sans accents), les chiffres, les points et les tirets (pas de blanc). Vous ne devez pas mettre de majuscule dans les logins et les adresses mail. |
OU | les majuscules, minuscules (sans accents), les chiffres, les points, les blancs et les tirets |
Groupe | majuscules, minuscules (sans accents), les chiffres, les points et les tirets (pas de blanc). Mais le nom de ces groupes ne doit pas commencer par un chiffre (ceci est réservé aux groupes créés automatiquement). |
Mot de passe | 8 caractères minimum, présence de minuscule, majuscule et de chiffre intercalé obligatoirement, un ou plusieurs caractères spéciaux sont recommandés. |
La seule méthode acceptable pour authentifier un utilisateur en utilisant un annuaire LDAP est la suivante :
Prérequis :
Votre application, pour authentifier un utilisateur, devra suivre la procédure suivante :
Il s'agit de la seule méthode recommandée.
La méthode applée fastbind qui consiste à calculer (deviner) le DN de l'utilisateur à partir du login qu'il aura saisi dans le formulaire d'authentification n'est pas conseillée et ne fonctionnera pas sur l'annuaire Active Directory de l'université.
Une autre méthode, parfois rencontrée, non sécurisée, non portable et fortement déconseillée, qui consiste, à récupérer de l'annuaire, le condensat (hash) du mot de passe de l'utilisateur pour le comparer au hash du mot de passe saisi par l'utilisateur, ne sera pas possible sur un annuaire Active Directory.
Il est impossible d'extraire d'un annuaire Active Directory en LDAP les condensats des mots de passe utilisateurs.
La procédure d'authentification décrite plus haut, implique de faire circuler sur le réseau les mots de passe du compte de service et le mot de passe de l'utilisateur.
Afin de se prémunir d'activité malveillante, la communication entre votre application et l'annuaire devra être chiffrée en utilisant la version sécurisée du protocole LDAP : LDAPS qui utilise par défault le port TCP 636.
Les serveurs de l'université utilisent des certificats x509 émis par l'autorité TERENA. Pour réussir à se connecter en LDAPS, il est probable qu'il faille ajouter côté client au moins le certificat de l'autorité intermédiaire TERENA SSL CA 3 :
LDAPS permet la communication LDAP au dessus d'un canal SSL/TLS monté au préalable.
LDAP StartTLS consiste en l'upgrade d'une communication LDAP non chiffrée en communication chiffrée par SSL/TLS.
Dans notre cas, seules les communications LDAPS sur le port 636 seront supportées.
La version du protocole LDAP recommandé pour s'interfacer avec l'annuaire Active Directory est la version 3.
Un annuaire LDAP est généralement consitué de partitions.
Des données dans une partition peut comporter des références (referrals) vers une autre partition.
Quand on soumet une réquête LDAP à un annuaire Active Directory, celui-ci répond généralement avec 3 referrals, vers les partitions Configuration, DomaiDNSZones et ForestDNSZones.
Ces 3 partitions ne vont seront pas utiles et vous n'y aurez de toute façon pas accès.
Dans le cas d'une réquête, votre client LDAP essaiera de suivre ces referrals, cela échouera, souvent avec un TimeOut, plutôt long qui impactera votre application et l'expérience utilisateur.
Pour ne pas suivre les referrals, une option à votre connexion LDAP devra être spécifiée :
LDAP_OPT_REFERRALS = 0
<?php // Login de l'utilisateur recupere du formulaire d'authentification $user_login = $_POST['login']; // Mot de passe de l'utilisateur recupere du formulaire d'authentification $user_passwd = $_POST['passwd']; // URL du serveur LDAP, integrant le protocole, sur le port par default $ldap_server = "ldaps://ldap.univ.fr"; // Port du serveur LDAP $ldap_server_port = 636; // DN du compte de service dedie a l'application $ldap_binddn = "cn=svc.test,dc=univ,dc=fr"; // Mot de passe du compte de service dedie a l'application $ldap_binpasswd = "21uE166S9ZNJzpp3Nw3Z"; // Base de recherche pour retrouver l'utilisateur dans l'annuaire $ldap_base = "dc=univ,dc=fr"; // Filtre de recherche pour retrouver l'utilisateur dans l'annuaire $ldap_filter = "(sAMAccountName=$user_login)"; // Ouverture d'une connexion LDAPS avec l'anuaire LDAP $ldapconn = @ldap_connect($ldap_server, $ldap_server_port); if ($ldapconn) { // Utilisation du protocole LDAP version 3 ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); // On ne suivra pas les referrals ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); // Authentification avec le compte de service $ldapbind = @ldap_bind($ldapconn, $ldap_binddn, $ldap_binpasswd); if ($ldapbind) { // Recherche de l'utilisateur a partir de son login $sr = ldap_search($ldapconn, $ldap_base, $ldap_filter); // Recuperation du DN de l'utilisateur $data = ldap_get_entries($ldapconn, $sr); if ($data['count']==1) { $user_dn=$data[0]['dn']; // Tentative d'authentification avec le compte de l'utilisateur $ldapbind_user = @ldap_bind($ldapconn, $user_dn, $user_passwd); if ($ldapbind_user) { echo "User authentication success"; } else { echo "User authentication error"; exit; } } } else { echo "Service account connection error"; exit; } } ?> |
Voici une liste non exhaustive des attributs valués disponibles pour vos applications dans l'annuaire Active Directory de l'université.
Attribut | Description |
---|---|
department | Intitulé du service de l'affection principale de l'utilisateur |
displayName | Nom d'affichage NOM PRENOM |
givenName | Prénom |
Adresse de messagerie principale | |
memberOf | Groupes dont l'utilisateur est membre |
sAMAccountName | Identifiant/Login de l'utilisateur |
sn | Nom de famille |