मैं कमांड लाइन के माध्यम से LDAP के साथ कैसे प्रमाणित करूं?


35

LDAP सर्वर सोलारिस पर होस्ट किया गया है। ग्राहक CentOS है। LDAP के माध्यम से OpenLDAP / NSLCD / SSH प्रमाणीकरण ठीक काम करते हैं, लेकिन मैं LDAP मुद्दों को डीबग करने के लिए ldapsearch कमांड का उपयोग करने में सक्षम नहीं हूं।

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

मैंने प्रमाण पत्र के साथ एक पैरामीटर के रूप में /etc/openldap/cacerts/cacert.pem देते हुए प्रमाण पत्र के साथ प्रमाणीकरण की कोशिश की है, लेकिन यह प्रमाणीकरण के लिए इस प्रमाण पत्र को स्वीकार नहीं करता है।

जवाबों:


60

आप एसएएसएल को बंद करना चाहते हैं और "-x" विकल्प के साथ सरल प्रमाणीकरण का उपयोग कर सकते हैं। उदाहरण के लिए, किसी विशेष उपयोगकर्ता को खोजने के लिए एक खोज

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'

द्वारा "परीक्षण-उपयोगकर्ता" मिलेगा

  • -D - बाइंड यूजर "सर्च-यूजर" का उपयोग करें
  • -W - पासवर्ड के लिए शीघ्र
  • -H - LDAP सर्वर का URL। इस मामले में गैर-एसएसएल; SSL के लिए "ldaps: //" का उपयोग करें
  • -b - सर्च बेस
  • -s - सर्च स्कोप - यानी ट्री बेस के लिए आधार, लेवल डाउन के लिए एक और सब के लिए उप रिकर्सिवली ट्री को सर्च करने में (थोड़ी देर लग सकती है)
  • अंत में एक गैर-विकल्प तर्क के रूप में खोज फ़िल्टर। इस मामले में हम "परीक्षण-उपयोगकर्ता" के यूआईडी की खोज करेंगे

2
फ्रेड के पास यह अधिकार है, सिवाय इसके कि आपको खोज आधार या होस्ट को निर्दिष्ट करने की आवश्यकता नहीं है यदि आप निर्दिष्ट किए गए वाले से खुश हैं /etc/openldap/ldap.conf, तो निम्नलिखित को संभवतः काम करना चाहिए: ldapsearch -x -D "<bind dn>" -W <क्वेरी >
— जेसन टैन

हम ldap लॉगिन के लिए उपयोगकर्ता नाम कैसे निर्दिष्ट करते हैं
— myloginid

यह निर्भर करता है कि आप "उपयोगकर्ता नाम" से क्या मतलब है। बाँध डीएन (वास्तव में क्वेरी चलाने के लिए प्रमाणित करने के लिए) -D तर्क द्वारा दिया गया है। उपयोगकर्ता रिकॉर्ड के लिए इस उदाहरण में वास्तविक खोज, अंतिम तर्क के रूप में फ़िल्टर में दी गई है।
— फ्रेड क्लॉसन

1
बहुत धन्यवाद! आपने मेरी जान बचाई :)
— मार्सलो

6

लगता है कि मैं एक ही सवाल पूछना चाहता हूँ: https://stackoverflow.com/questions/27571558/how-was-authentication-built-on-ldap

Http://thecarlhall.wordpress.com/2011/01/04/ldap-authentication-authorization-dissected-and-digested/ : को देखें

  • LDAP सर्वर से कनेक्शन प्राप्त करें।
  • अनुप्रयोग उपयोगकर्ता के रूप में बाइंड करें।
  • प्रमाणित करने के लिए उपयोगकर्ता का डीएन (प्रतिष्ठित नाम) खोजें।
  • चरण 3 से DN का उपयोग करके प्रमाणित किए जाने वाले उपयोगकर्ता के रूप में बाइंड करें।

इसे संक्षेप में कहा जा सकता है (कमांड लाइन में प्रयोग):

$ 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

ध्यान दें, यदि आप अपने पूर्ण bn डीएन को नहीं जानते हैं, तो आप अपने सामान्य उपयोगकर्ता नाम या ईमेल का भी उपयोग कर सकते हैं -U

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

0

हम FreeIPA / IDM का उपयोग कर रहे हैं और मैं निम्नलिखित का उपयोग करके इसके खिलाफ प्रमाणित करने में सक्षम था:

$ 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>
व्याख्या
  • यह विवरण के चारों ओर सभी विवरण लौटाएगा uid=<my username>
  • uid=<my username> फ़िल्टर है (RFC 4515 आज्ञाकारी LDAP खोज फ़िल्टर)
  • uid=<my username>जानकारी / फिल्टर प्रदर्शन करने के लिए है
  • o ldif-wrap=no परिणामों की रैपिंग अक्षम करता है
  • -Wबलों ldapsearchबाँध विशिष्ट नाम के लिए पासवर्ड के लिए क्वेरी के लिएuid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com
  • जब इस उपयोगकर्ता के लिए पासवर्ड के लिए संकेत दिया जाता है तो संकेत इस तरह दिखाई देगा:

    Enter LDAP Password:
    
Refereneces

ldapsearchमैनपेज और सीएलआई मदद के संदर्भ के लिए:

   -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)

पूर्ण उदाहरण

$ 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.