LDAP ile komut satırı üzerinden nasıl kimlik doğrulama yapabilirim?


35

LDAP sunucusu Solaris'te barındırılmaktadır. Müşteri CentOS'tur. LDAP üzerinden OpenLDAP / NSLCD / SSH kimlik doğrulaması iyi çalışıyor, ancak LDAP sorunlarını gidermek için ldapsearch komutlarını kullanamıyorum.

[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 ~]#

Ldapsearch ile /etc/openldap/cacerts/cacert.pem parametresini parametre olarak vererek bir sertifika ile kimlik doğrulamayı denedim, ancak bu sertifikayı doğrulama için kabul etmedi.

Yanıtlar:


60

SASL'yi kapatmak ve "-x" seçeneğiyle basit kimlik doğrulamayı kullanmak isteyebilirsiniz. Örneğin, belirli bir kullanıcıyı bulmak için bir arama

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'

Tarafından "test kullanıcısı" bulunur

  • -D - Bağlayıcı kullanıcısı "search-user" kullan
  • -W - Şifre istemi
  • -H - LDAP sunucusunun URL'si. Bu durumda SSL olmayan; SSL için "ldaps: //" kullanın
  • -b - arama tabanı
  • -s - yani - kapsamını ara taban ağacının üssünün biri aşağı seviyede ve üzerinde için alt (bir süre alabilir) yinelemeli ağacının dibine aranması için
  • Sonunda, seçenek olmayan bir argüman olarak arama filtresi. Bu durumda "test kullanıcısı" kullanıcı kimliğini arayacağız

2
Fred'in hakkı vardır, ancak /etc/openldap/ldap.confaşağıdakileri yapması gerektiğinden emin olmanız halinde arama üssünü veya ana bilgisayarı belirtmeniz gerekmediği sürece , aşağıdakiler muhtemelen çalışmalıdır: ldapsearch -x -D "<bind dn>" -W <query >
Jason Tan

Ldap login için kullanıcı adını nasıl belirleriz
myloginid ve

Bu, "kullanıcı adı" ile ne demek istediğinizi belirler. Bağlama DN'si (sorguyu gerçekten çalıştırmayı doğrulamak için) -D argümanı tarafından verilir. Bu örnekte bir kullanıcı kaydı için yapılan asıl arama, filtrede son argüman olarak verilir.
Fred Clausen

1
çok teşekkürler! hayatımı kurtardın :)
Marslo

6

Ben de aynı soruyu sorduğum gibi görünüyor: https://stackoverflow.com/questions/27571558/how-was-authentication-built-on-ldap

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

  • LDAP sunucusuyla bağlantı kurun.
  • Uygulama kullanıcısı olarak bağlayın.
  • Kimliği doğrulanacak kullanıcının DN'sini (ayırt edici ad) arayın.
  • 3. adımdaki DN kullanılarak kimliği doğrulanacak kullanıcı olarak bağlayın.

Bu (komut satırında deney) olarak özetlenebilir:

$ 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"

1

Unutmayın, tam bağlanma DN'nizi bilmiyorsanız, normal kullanıcı adınızı veya e-posta adresinizi de kullanabilirsiniz. -U

ldapsearch -v -h contoso.com -U turiya.gouw@contoso.com -w 'MY_PASSWORD' -b 'DC=contoso,DC=com' '(objectClass=computer)'

0

Biz kullanıyoruz FreeIPA / IDM ve aşağıdaki kullanarak bu kimlik doğrulaması başardı:

$ ldapsearch -h idm-01a.somednsdom.com \
    -D 'uid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com' \
    -o ldif-wrap=no \
    -b 'cn=accounts,dc=somedcdom,dc=com' \
    -W uid=<my username>
açıklama
  • Bu, çevresindeki tüm ayrıntıları döndürecektir uid=<my username>
  • uid=<my username> filtredir (RFC 4515 uyumlu LDAP arama filtresi)
  • Gerçekleştirilecek uid=<my username>sorgu / filtre
  • o ldif-wrap=no sonuçların sarılmasını engeller
  • -WKuvvetler ldapsearchbağlamak seçkin isim şifre sorguyauid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com
  • Bu kullanıcının şifresi istendiğinde bilgi istemi şöyle görünecektir:

    Enter LDAP Password:
    
Refereneces

ldapsearchManpage & CLI yardımından referans için:

   -D binddn
          Use the Distinguished Name binddn to bind to the LDAP directory.  
          For SASL binds, the server is expected to ignore this value.

   -b searchbase
          Use searchbase as the starting point for the search instead of the 
          default.

   -W     Prompt for simple authentication.  This is used instead of specifying 
          the password on the command line.

  -o <opt>[=<optparam] general options
             nettimeout=<timeout> (in seconds, or "none" or "max")
             ldif-wrap=<width> (in columns, or "no" for no wrapping)

Tam örnek

$ ldapsearch -h idm-01a.somednsdom.com \
    -D 'uid=joeuser,cn=users,cn=accounts,dc=somedcdom,dc=com' \
    -o ldif-wrap=no \
    -b 'cn=accounts,dc=somedcdom,dc=com' \
    -W uid=joeuser

# extended LDIF
#
# LDAPv3
# base <cn=accounts,dc=somedcdom,dc=com> with scope subtree
# filter: uid=joeuser
# requesting: ALL
#

# joeuser, users, accounts, somedcdom.com
dn: uid=joeuser,cn=users,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=sysadmin,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=sudorules,cn=sudo,dc=somedcdom,dc=com
memberOf: cn=eng-systems,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=hbac,dc=somedcdom,dc=com
memberOf: cn=admins,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=sudorules,cn=sudo,dc=somedcdom,dc=com
memberOf: cn=User Administrator,cn=roles,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=User Administrators,cn=privileges,cn=pbac,dc=somedcdom,dc=com
memberOf: cn=System: Add User to default group,cn=permissions,cn=pbac,dc=somedcdom,dc=com
...
...
krbLoginFailedCount: 0
krbLastFailedAuth: 20190320223946Z
loginShell: /bin/bash
krbExtraData:: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
krbPasswordExpiration: 20190829144625Z
krbLastPwdChange: 20190302144625Z
krbLastAdminUnlock: 20190111080021Z
ipaSshPubKey: ssh-rsa A....XXXXXXXXXXXX...jelByox0PM5Q== joeuser@somednsdom.com
mepManagedEntry: cn=joeuser,cn=groups,cn=accounts,dc=somedcdom,dc=com
displayName: Joe User
uid: joeuser
krbCanonicalName: joeuser@SOMEDCDOM.COM
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
objectClass: inetuser
objectClass: posixaccount
objectClass: krbprincipalaux
objectClass: krbticketpolicyaux
objectClass: ipaobject
objectClass: ipasshuser
objectClass: ipaSshGroupOfPubKeys
objectClass: mepOriginEntry
initials: JU
gecos: Joe User
sn: Mingolelli
homeDirectory: /home/joeuser
mail: joeuser@somednsdom.com
krbPrincipalName: joeuser@SOMEDCDOM.COM
givenName: Joe
cn: Joe User
ipaUniqueID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
uidNumber: 900000000
gidNumber: 900000000
krbPwdPolicyReference: cn=admins,cn=SOMEDCDOM.COM,cn=kerberos,dc=somedcdom,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.