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).
apt install sasl2-bin libsasl2-modules-ldap
START=yes
MECHANISMS=“ldap”
systemctl daemon-reload
systemctl enable saslauthd.service
systemctl start saslauthd.service
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
chmod 600 /etc/saslauthd.conf
Dans cette exemple, nous partons du principe que vous avez déjà un annuaire LDAP en place et fonctionnel.
adduser openldap sasl
pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux
dn: cn=config changetype: modify add: olcSaslHost olcSaslHost: localhost - add: olcSaslSecProps olcSaslSecProps: none
ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/config-sasl.ldif
service slapd stop service slapd start
Pour vérifier que l'authentification SASL fonctionne correctement, commencer par utiliser la commande suivante à l'aide d'identifiant de tests :
testsaslauthd -u user -p password
Si l'authentification échoue, vous pouvez en savoir plus sur le problème à l'aide de la commande suivante :
service saslauthd status
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 :
ldapsearch -x -H ldaps://ldap.example.fr -D uid=username,ou=people,o=example -W -b uid=username,ou=people,o=example