web-dev-qa-db-fra.com

Comment m'authentifier auprès de LDAP via la ligne de commande?

Le serveur LDAP est hébergé sur Solaris. Le client est CentOS. L'authentification OpenLDAP/NSLCD/SSH via LDAP fonctionne correctement, mais je ne suis pas en mesure d'utiliser les commandes ldapsearch pour déboguer les problèmes LDAP.

[root@tst-01 ~]# ldapsearch
SASL/EXTERNAL authentication started
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
        additional info: SASL(-4): no mechanism available:
[root@tst-01 ~]# cat /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://ldap1.tst.domain.tld ldap://ldap2.tst.domain.tld
BASE dc=tst,dc=domain,dc=tld
[root@tst-01 ~]# ls -al /etc/openldap/cacerts
total 12
drwxr-xr-x. 2 root root 4096 Jun  6 10:31 .
drwxr-xr-x. 3 root root 4096 Jun 10 10:12 ..
-rw-r--r--. 1 root root  895 Jun  6 10:01 cacert.pem
lrwxrwxrwx. 1 root root   10 Jun  6 10:31 cf848aa4.0 -> cacert.pem
[root@tst-01 ~]#

J'ai essayé l'authentification avec un certificat via ldapsearch en donnant /etc/openldap/cacerts/cacert.pem comme paramètre, mais il n'a pas accepté ce certificat pour l'authentification.

37
ujjain

Vous pouvez désactiver SASL et utiliser une authentification simple avec l'option "-x". Par exemple, une recherche pour trouver un utilisateur particulier

ldapsearch -x -D "uid=search-user,ou=People,dc=example,dc=com" \
           -W -H ldap://ldap.example.com -b "ou=People,dc=example,dc=com" \
           -s sub 'uid=test-user'

Trouvera "test-user" par

  • - D - Utilisez l'utilisateur bind "search-user"
  • - W - Demander le mot de passe
  • - H - URL du serveur LDAP. Non SSL dans ce cas; utiliser "ldaps: //" pour SSL
  • - b - La base de recherche
  • - s - Étendue de la recherche - c'est-à-dire base pour la base de l'arborescence, n pour au niveau inférieur et sub pour récursivement chercher dans l'arbre (cela peut prendre un certain temps)
  • Enfin le filtre de recherche comme argument sans option. Dans ce cas, nous rechercherons l'uid de "test-user"
63
Fred Clausen

Semble que je pose la même question à: https://stackoverflow.com/questions/27571558/how-was-authentication-built-on-ldap

Voir http://thecarlhall.wordpress.com/2011/01/04/ldap-authentication-authorization-dissected-and-digested/ :

  • Obtenez une connexion au serveur LDAP.
  • Liez en tant qu'utilisateur de l'application.
  • Recherchez le DN (nom unique) de l'utilisateur à authentifier.
  • Liez en tant qu'utilisateur à authentifier à l'aide de DN à partir de l'étape 3.

Cela peut être résumé comme (expérience en ligne de commande):

$ ldapsearch -x -h ldap.company.com -s sub -b 'dc=europe,dc=com' "uid=XYZ"
....
dn: uid=XYZ,dc=sales,dc=europe,dc=com
...
$ ldapsearch -W -h ldap.company.com -D 'uid=XYZ,dc=sales,dc=europe,dc=com' \
    -s sub -b 'dc=europe,dc=com' "uid=XYZ"
6
gavenkoa

Remarque: si vous ne connaissez pas votre DN de liaison complet, vous pouvez également utiliser votre nom d'utilisateur ou votre e-mail normal avec -U

ldapsearch -v -h contoso.com -U [email protected] -w 'MY_PASSWORD' -b 'DC=contoso,DC=com' '(objectClass=computer)'
1
turiyag