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 :




Bonnes pratiques de l'AD

https://intranet.univ-lyon1.fr/medias/fichier/bonnes-pratiques-pour-l-utilisation-de-l-annuaire-active-directory-univ-lyon1_1443172580185-pdf

  • Gestion des utilisateurs o Vous ne devez créer de comptes à la main  de type invité que dans une OU (Organisation Unit) dédiée à l’intérieur de l’OU que vous gérez et seulement pour des personnes qui restent moins d’un mois à l’université. Ces comptes devront suivre les recommandations de nommage ci-dessous et seront supprimés dès le départ des personnes. Ils seront créés avec une date d’expiration. Vous pourrez créer des comptes test, système ou d’application en complétant obligatoirement les champs nom et prénom par ceux de la personne responsable de ce compte.

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

  • L'utilisation des comptes banalisés (utilisés par plusieurs personnes) est proscrite par l'université.
  • Pour obtenir un compte pour une personne qui reste plus d’un mois à l’université vous devez la faire enregistrer dans SIHAM comme personnel hébergé. Elle bénéficiera d’une carte CUMUL.
  • Vous ne devez pas supprimer de comptes en dehors des  OU « Utilisateurs-invités » ou « Systeme ».
  • Vous devez inciter vos utilisateurs à changer leur mot de passe pour un mot de passe suffisamment complexe pour adhérer aux recommandations en matière de Sécurité des systèmes d’information.

 

  • Gestion des groupes d’utilisateurs o Pour gérer des droits pour les utilisateurs, vous devez utiliser des groupes d’utilisateurs et éventuellement des groupes de groupes.
    • Le nommage des groupes suit la syntaxe suivante :

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

 

  • Gestion des ordinateurs et des serveurs membres du domaine  o Il est fortement recommandé d’ajouter vos ordinateurs au domaine univ-lyon1.fr pour bénéficier pleinement des services de messagerie et d’hébergement de fichiers et d’activer le verrouillage automatique de session en cas d’inactivité du poste.
    • Ces ordinateurs doivent être placés dans une OU « Ordinateurs » à l’intérieur de l’OU que vous gérez.
    • Un nom de machine ne doit pas excéder  15 caractères et ne doit comporter aucune information personnelle sur ses utilisateurs ou sur le type de service ou d’application qu’elle héberge. o Les mots de passe administrateurs locaux de ces ordinateurs doivent aussi adhérer aux recommandations en matière de Sécurité des systèmes d’information. Si un utilisateur veut administrer son poste qui est dans le domaine univ-lyon1.fr, il est recommandé de placer son compte dans le groupe administrateur local plutôt que de lui donner le mot de passe administrateur de la machine.
    • Les postes de travail et vos serveurs doivent avoir des systèmes d’exploitation et des antivirus à jour et le pare-feu activé.
    • Il est préférable de favoriser le stockage des données utilisateurs et des profils sur des serveurs (exemple : TERA.univ-lyon1.fr) dans un souci de sécurité des données (serveurs sécurisés, sauvegarde, snapshots).

 

  • Caractères autorisés 

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. 

 

  • Gestion des stratégies de groupe o Toute création de GPO doit porter un nom explicite de la forme Plus-grosse-entité.moins-grosseentité.petite-entité-« fonction » et être liée à l’OU univ-lyon1\sie\computers.
    • Toute nouvelle GPO créée doit obligatoirement s’appliquer à un groupe de sécurité (et pas à tous les utilisateurs) créé dans l’OU univ-lyon1\sie\group avec un nom de la forme Plus-grosse-entité.moinsgrosse-entité.petite-entité-GPO-« nom gpo »
    • Attention : il est interdit de créer une GPO sans filtrage par un groupe de sécurité qui lui est dédié et de lier une ancienne GPO à une OU du nouveau DIT.

 

  • Recommandation pour les administrateurs  o Vous ne devez pas administrer votre OU avec votre compte personnel mais demander la création d’un compte administrateur de type sys_prenom.nom. Si vous partez, ne donnez pas votre compte et mot de passe à l’administrateur qui vous remplace mais demandez la suppression de votre compte administrateur et la création d’un nouveau pour votre remplaçant. 
    • Dans la même logique, votre remplaçant doit changer les mots de passe des administrateurs locaux de vos serveurs et postes de travail.
    • Une machine virtuelle nommée cssi-mgmt.univ-lyon1.fr est à votre disposition pour administrer votre OU, vous pouvez vous connecter à celle-ci par le bureau à distance.
    • Toute installation d’un serveur de licences TSE doit passer par la DSI et le CISR car elle nécessite des privilèges élevés sur l’AD.

 


Méthode d'authentification : Bind LDAP


La seule méthode acceptable pour authentifier un utilisateur en utilisant un annuaire LDAP est la suivante :


Prérequis :

  • Création d'un compte de service dédié à votre application, contacter la DSI si besoin.


  • Vous avez alors à votre connaissance :
      • un nom de serveur LDAP qui servira à authentifier vos utilisateurs
        (utilisez de préférence le serveur frontal ldap-ad plutôt qu'un contrôleur de domaine spécifique dont l'indisponibilité bloquera votre application)
      • un compte de service svc_xxxx sous la forme d'un DistinguishedName (DN) et d'un mot de passe
      • une base de recherche, de type : dc=univ,dc=fr
      • un filtre de recherche pour retrouver l'objet utilisateur à authentifier, de type : (sAMAccountName=$login)


  • L'application, dans la phase d'authentification, récupérera auprès de l'utilisateur :

      • un identifiant (login)
      • un mot de passe


Votre application, pour authentifier un utilisateur, devra suivre la procédure suivante :

  • Connexion au serveur LDAP
  • Ouverture d'une session LDAP (Bind)  avec le compte de service
  • Recherche dans l'annuaire de l'objet répondant au filtre et récupération du DistinguishedName de l'utilisateur
  • Tentative d'ouverture de session LDAP (Bind) avec le compte de l'utilisateur
  • Si l'ouverture réussie, les login et mot de passe saisis par l'utilisateur sont correct, il est correctement authentifié.


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.




Recommandations

Accès sécurisé au serveur LDAP

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 Vs. LDAP StartTLS

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. 


Version du protocole LDAP

La version du protocole LDAP recommandé pour s'interfacer avec l'annuaire Active Directory est la version 3.


Suivi des REFERRALS

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


Exemple PHP d'authentification utilisateur
<?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;
	}
}

?>







Attributs disponibles

Voici une liste non exhaustive des attributs valués disponibles pour vos applications dans l'annuaire Active Directory de l'université.


AttributDescription
departmentIntitulé du service de l'affection principale de l'utilisateur
displayNameNom d'affichage NOM PRENOM
givenNamePrénom
mailAdresse de messagerie principale
memberOfGroupes dont l'utilisateur est membre
sAMAccountNameIdentifiant/Login de l'utilisateur
snNom de famille


  • Aucune étiquette