Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Délégation d'authentification vers un AD via SASL ====== Il est possible, utilisateur par utilisateur, de déléguer son authentification à un AD (ou un autre annuaire LDAP) via SASL en utilisant un mot de passe au format ''{SASL}username@domain''. Dans ce cas, en cas de tentative de connexion de l'utilisateur, OpenLDAP interrogera le service SASL pour valider que le mot de passe fourni par l'utilisateur pour ce connecter correspond bien au compte SASL spécifié dans son attribut mot de passe (''username@domain'' dans l'exemple fourni). <note tip>Dans OpenLDAP 2.5 (>=2.5.2), une //overlay// [[https://www.openldap.org/software/man.cgi?query=slapo-remoteauth&manpath=OpenLDAP+2.5-Release|remoteauth]] a été ajoutez et implémente cette fonctionnalité sans composant externe. Celle-ci ajoute également la possibilité de stocker le mot de passe localement après une authentification réussie.</note> ===== Mise en place du service SASL ===== * Installer le service //saslauthd// et son module LDAP : <code bash>apt install sasl2-bin libsasl2-modules-ldap</code> * Éditez le fichier ///etc/default/saslauthd// et ajuster les variables suivantes : * ''START=yes'' * ''MECHANISMS="ldap"'' * Faite recharger ces modifications par //systemd// puis activer par défaut et lancer le service : <code bash>systemctl daemon-reload systemctl enable saslauthd.service systemctl start saslauthd.service</code> * Créer le fichier ///etc/saslauthd.conf// en ajustant les paramètre de connexion à l'AD : <code>ldap_servers: ldaps://dc1.ad.int:636 ldaps://dc2.ad.int:636 ldap_search_base: dc=ad,dc=int ldap_timeout: 10 ldap_filter: sAMAccountName=%u ldap_bind_dn: [Bind DN] ldap_password: [Bind Password] ldap_deref: never ldap_restart: yes ldap_scope: sub ldap_use_sasl: no ldap_start_tls: no ldap_version: 3 ldap_auth_method: bind</code> * Ajuster les droits du fichier nouvellement créé : <code bash>chmod 600 /etc/saslauthd.conf</code> <note important>Dans cette exemple, la connexion à l'annuaire AD se fait via LDAPS. Assurez-vous que le certificat SSL présenté par le service LDAPS de l'AD est considéré comme valide. En cas de certificat générez par l'autorité de certification de l'AD, [[informatique:securite:installer_ca_custom|installer le certificat de celle-ci]].</note> ===== Configuration d'OpenLDAP ===== Dans cette exemple, nous partons du principe que vous avez déjà un annuaire LDAP en place et fonctionnel. * Ajouter l'utilisateur //openldap// au groupe //sasl// pour qu'il est accès à la socket UNIX sur service //saslauthd// : <code bash>adduser openldap sasl</code> * Créer le fichier de configuration SASL client d'OpenLDAP ///usr/lib/sasl2/slapd.conf// : <code>pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux</code> * Créer le fichier ///tmp/config-sasl.ldif// : <code ldif>dn: cn=config changetype: modify add: olcSaslHost olcSaslHost: localhost - add: olcSaslSecProps olcSaslSecProps: none </code> * importer cette configuration à l'aide de la commande suivante : <code bash>ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/config-sasl.ldif</code> * redémarer le service pour prise en compte : <code bash>service slapd stop service slapd start</code> ===== Vérifier que l'authentification SASL fonctionne correctement ===== Pour vérifier que l'authentification SASL fonctionne correctement, commencer par utiliser la commande suivante à l'aide d'identifiant de tests : <code bash>testsaslauthd -u user -p password</code> Si l'authentification échoue, vous pouvez en savoir plus sur le problème à l'aide de la commande suivante : <code bash>service saslauthd status</code> Une fois l'authentification fonctionnelle via la commande ''testsaslauthd'', tenter une authentification via OpenLDAP. Pour cela, modifier le mot de passe d'un utilisateur au format ''{SASL}username@domain''. Tester ensuite une connexion LDAP avec le compte utilisateur correspondant : <code bash>ldapsearch -x -H ldaps://ldap.example.fr -D uid=username,ou=people,o=example -W -b uid=username,ou=people,o=example</code>