Connexion LDAP ou AD
Sommaire
Présentation
Cette page a pour objet de décrire une procédure pour interfacer Symfony avec une authentification LDAP ou AD.
Le contenu de cette procédure est majoritairement inspiré de la documentation officielle de Symfony :
- Mise en place de la sécurité
- Fournisseurs d'utilisateurs
- Méthodes d'interfaçage avec un LDAP
- Utiliser Guard pour s'authentifier
Une autre partie de cette procédure s'est inspirée de la solution de Stanislav Drozdov de ré-écriture du fournisseur d'utilisateurs LDAP :
Ainsi, cette procédure a deux objectifs :
- Rassembler dans une unique page les informations nécessaires à l'interfaçage avec un LDAP ou AD
- En effet, pour ce type de besoin, les informations sont dispersées au sein de la documentation officielle de Symfony
- Aller au-delà des limitations du composant natif LDAP de Symfony
- Bien que le composant LDAP simplifie énormément la mise en place de l'interfaçage avec Symfony, il n'embarque pas nativement d'option permettant la récupération automatique de certains champs. Il faut donc le surcharger en fonction des besoins
Marche à suivre
La marche à suivre est plutôt bien présentée dans la documentation officielle.
Elle se présente sous la forme suivante :
- Installer le module de sécurité
- Créer la gestion des utilisateurs
- Mise en place de l'authentification
- Mise en place du filtrage et des rôles
Installer le module de sécurité
Cette partie est la plus simple de la procédure. Si Symfony a été installé avec l'option --full
, elle n'est pas nécessaire.
Pour installer le module de sécurité, lancer la commande suivante à la racine du projet :
Créer la gestion des utilisateurs
Le module security
s'appuie sur des fournisseurs d'utilisateurs pour gérer les utilisateurs.
Comme indiqué dans la documentation à propos des fournisseurs d'utilisateurs, Symfony embarque nativement les fournisseurs suivants :
- Fournisseur d'utilisateurs de type "entité" qui charge les utilisateurs depuis une base de données
- Fournisseur d'utilisateurs de type "LDAP" qui charge les utilisateurs depuis un serveur LDAP ou AD
- Fournisseur d'utilisateurs de type "mémoire" qui charge les utilisateurs depuis un fichier de configuration
- Fournisseur d'utilisateurs de type "chaîne" qui charge les utilisateurs depuis d'autres fournisseurs d'utilisateurs
Bien que la documentation principale relative au module de sécurité laisse entendre qu'il faut créer une classe d'utilisateur, cette étape est inutile pour des utilisateurs LDAP (à moins de vouloir utiliser une classe d'utilisateur personnalisée). En effet, le composant symfony/ldap
embarque nativement une classe d'utilisateur LdapUser
.