.. _ldap_ad_authentication: =========================================== Guide LDAPSEARCH dans Active Directory (AD) =========================================== .. contents:: :depth: 2 :local: :backlinks: top Introduction ============ Ce guide détaillé explique comment interroger et s'authentifier sur un annuaire LDAP sous Active Directory (AD). Est documentés ici comment tester les connexions, rechercher des utilisateurs et groupes, gérer les erreurs courantes et construire des filtres LDAP adaptés. Fonctionnalités Principales --------------------------- - **Authentification LDAP sécurisée** - **Recherche d'utilisateurs et de groupes** - **Construction et optimisation de filtres LDAP** - **Intégration LDAP dans une application** Installation et Pré-requis =========================== - Un accès à un serveur Active Directory - Un compte utilisateur ayant les droits nécessaires pour interroger LDAP - Outils requis : `ldap-utils` (Ubuntu/Debian) ou `openldap-clients` (CentOS/RHEL) Installation des outils LDAP ---------------------------- .. code-block:: bash # Debian/Ubuntu sudo apt update && sudo apt install ldap-utils # CentOS/RHEL sudo yum install openldap-clients Authentification et Connexion LDAP =================================== Tester une Connexion avec un Compte AD -------------------------------------- .. code-block:: bash ldapsearch -x -H ldap://sous-dc.dc.ad:389 \ -D "DOMAINE\compte_user" -W \ -b "DC=sous-dc,DC=dc,DC=ad" "(objectClass=user)" cn Erreurs Courantes et Solutions ------------------------------ +------------------------------+------------------------------------+----------------------------+ | Erreur | Cause Possible | Solution | +==============================+====================================+============================+ | Invalid Credentials (49) | Mauvais mot de passe ou DN | Vérifier le DN, tester | | | incorrect | DOMAINE\\compte_user | +------------------------------+------------------------------------+----------------------------+ | Could not bind to AD user | Mauvais DN ou compte désactivé | Vérifier distinguishedName | +------------------------------+------------------------------------+----------------------------+ | Operations Error (1) | Accès anonyme interdit | Utiliser -D et -W | +------------------------------+------------------------------------+----------------------------+ Recherche d'Utilisateurs et de Groupes dans AD ============================================== Lister tous les Groupes disponibles ------------------------------------ .. code-block:: bash ldapsearch -x -H ldap://sous-dc.dc.ad:389 \ -D "DOMAINE\compte_user" -W \ -b "DC=sous-dc,DC=dc,DC=ad" "(objectClass=group)" cn Trouver un Groupe spécifique (``Group_system``) ----------------------------------------------- .. code-block:: bash ldapsearch -x -H ldap://sous-dc.dc.ad:389 \ -D "DOMAINE\compte_user" -W \ -b "DC=sous-dc,DC=dc,DC=ad" "(cn=Group_system)" dn Trouver tous les utilisateurs appartenant à un Groupe ------------------------------------------------------ .. code-block:: bash ldapsearch -x -H ldap://sous-dc.dc.ad:389 \ -D "DOMAINE\compte_user" -W \ -b "DC=sous-dc,DC=dc,DC=ad" \ "(&(objectClass=user)(memberOf=CN=Group_system,OU=Repertoire_AD,DC=sous-dc,DC=dc,DC=ad))" cn sAMAccountName mail Construction des Filtres LDAP ============================= Filtres de Base --------------- +----------------------------------+--------------------------------+ | Filtre | Explication | +==================================+================================+ | ``(objectClass=group)`` | Trouver tous les groupes | +----------------------------------+--------------------------------+ | ``(objectClass=user)`` | Trouver tous les utilisateurs | +----------------------------------+--------------------------------+ | ``(sAMAccountName=compte_user)`` | Trouver un utilisateur précis | +----------------------------------+--------------------------------+ | ``(cn=Group_system)`` | Trouver un groupe précis | +----------------------------------+--------------------------------+ Filtres Complexes (AND / OR) ---------------------------- +-----------------------------------------------------------+---------------------------------+ | Filtre | Explication | +===========================================================+=================================+ | ``(&(objectClass=user)(memberOf=CN=Group_system,...))`` | Trouver tous les utilisateurs | | | du groupe ``Group_system`` | +-----------------------------------------------------------+---------------------------------+ | ``(|(cn=Group_system)(cn=Admins))`` | Trouver ``Group_system`` ou | | | ``Admins`` | +-----------------------------------------------------------+---------------------------------+ Syntaxe AND (``&``) : ``(&(A)(B))`` Syntaxe OR (``|``) : ``(|(A)(B))`` Tester un Filtre avec ``ldapsearch`` ------------------------------------ .. code-block:: bash ldapsearch -x -H ldap://sous-dc.dc.ad:389 \ -D "DOMAINE\compte_user" -W \ -b "DC=sous-dc,DC=dc,DC=ad" \ "(&(objectClass=user)(memberOf=CN=Group_system,OU=Repertoire_AD,DC=sous-dc,DC=dc,DC=ad))" cn mail Intégration LDAP dans une Application ====================================== Mapping des Attributs LDAP -------------------------- +----------------+---------------------+ | Champ | Attribut AD | +================+=====================+ | Login Name | ``sAMAccountName`` | +----------------+---------------------+ | Prénom | ``givenName`` | +----------------+---------------------+ | Nom | ``sn`` | +----------------+---------------------+ | Email | ``mail`` | +----------------+---------------------+ | Photo | ``thumbnailPhoto`` | +----------------+---------------------+ Configuration dans un Fichier YAML ---------------------------------- .. code-block:: yaml ldap: server: "ldap://sous-dc.dc.ad:389" bind_dn: "DOMAINE\compte_user" bind_password: "TON_MOT_DE_PASSE" base_dn: "DC=sous-dc,DC=dc,DC=ad" user_filter: "(&(objectClass=user)(memberOf=CN=Group_system,OU=Repertoire_AD,DC=sous-dc,DC=dc,DC=ad))" attributes: username: "sAMAccountName" first_name: "givenName" last_name: "sn" email: "mail" Checklist Finale ================ - ✅ Tester l’authentification LDAP avec ``DOMAINE\compte_user`` - ✅ Vérifier les groupes et les utilisateurs avec ``ldapsearch`` - ✅ Construire un filtre LDAP pour cibler ``Group_system`` - ✅ Intégrer la configuration LDAP dans l’application - ✅ Tester la connexion utilisateur via l’application Si une erreur survient, **vérifier les logs** et adapter la configuration ! 🚀