मैं कमांड लाइन के माध्यम से 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.