बेस कंटेनर में umlaut के साथ ldapsearch विफल रहता है


0

मैं एक है ouनामित Münchenमेरी LDAP (सक्रिय निर्देशिका, सटीक होना करने के लिए) में। इसकी खोज करने के लिए, मुझे \C3\BCपाठ्यक्रम के रूप में umlaut दर्ज करना होगा , लेकिन कम से कम ouयह साबित होने के रूप में मौजूद है:

$ ldapsearch -D $ADMIN -w $ADMINPWD -v -u -h $HOST -b 'ou=Benutzer,dc=[obfuscate]' '(ou=M\C3\BCnchen)' ou
ldap_initialize( ldap://[obfuscate] )
filter: (ou=M\C3\BCnchen)
requesting: ou 
# extended LDIF
#
# LDAPv3
# base <ou=Benutzer,dc=[obfuscate]> with scope subtree
# filter: (ou=M\C3\BCnchen)
# requesting: ou 
#

# M\C3\BCnchen, Benutzer, [obfuscate]
dn:: T1U9TcO8b[obfuscate]==
ufn: M\C3\BCnchen, Benutzer, [obfuscate]
ou:: TcO8bmNoZW4=

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

हालांकि, मैं जब तक मैं खोज कर सकते हैं के लिए उमलॉट (यानी का उपयोग \C3\BCफिल्टर में), मैं खोज नहीं कर सकते भीतर उमलाउट कहां (यानी उपयोग \C3\BC"आधार" पैरामीटर में):

$ ldapsearch -D $ADMIN -w $ADMINPWD -v -u -h $HOST -b 'ou=M\C3\BCnchen,ou=Benutzer,dc=[obfuscate]'                        
ldap_initialize( ldap://[obfuscate] )
filter: (objectclass=*)
requesting: All userApplication attributes
# extended LDIF
#
# LDAPv3
# base <ou=M\C3\BCnchen,ou=Benutzer,dc=[obfuscate]> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object
matchedDN: OU=Benutzer,DC=[obfuscate]
text: 0000208D: NameErr: DSID-031001CD, problem 2001 (NO_OBJECT), data 0, best match of:
    'OU=Benutzer,DC=[obfuscate]'


# numResponses: 1

त्रुटि का दावा है कि कहां मौजूद नहीं है, जबकि हमने अभी देखा है कि यह मौजूद है। तो मेरे प्रश्न में गलत क्या है? यह है: मुझे umlauts को कैसे एनकोड करना है -b? जाहिरा तौर पर विधि फिल्टर के लिए इस्तेमाल किया एन्कोडिंग से अलग होगा ...

मामले में जानकारी की आवश्यकता है: LDAP सर्वर एक MS Windows 2003 सक्रिय निर्देशिका सर्वर है और मैं ldapsearchउबंटू सटीक पेंगुलिन तक चलता हूं। और (हालांकि यह लागू नहीं होना चाहिए क्योंकि हमारे पास वैसे भी बास्कलैश-एन्कोडिंग है):

$ locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE@euro
LC_CTYPE="de_DE@euro"
LC_NUMERIC="de_DE@euro"
LC_TIME="de_DE@euro"
LC_COLLATE="de_DE@euro"
LC_MONETARY="de_DE@euro"
LC_MESSAGES="de_DE@euro"
LC_PAPER="de_DE@euro"
LC_NAME="de_DE@euro"
LC_ADDRESS="de_DE@euro"
LC_TELEPHONE="de_DE@euro"
LC_MEASUREMENT="de_DE@euro"
LC_IDENTIFICATION="de_DE@euro"
LC_ALL=de_DE@euro

जवाबों:


1

मुझे समाधान मिला (हालांकि मैं अनिश्चित हूं कि क्या यह ldap इनग्रेनल पर लागू होता है या एमएस सक्रिय निर्देशिका के लिए कुछ विशिष्ट है)। उम्लैट्स को उनके डॉटलेस (यानी डाइरेसिस-कम) समकक्षों के साथ समान माना जाता है। इस प्रकार "मुन्चेन" को निर्दिष्ट करने के बजाय "मुनचेन" को निर्दिष्ट किया जा सकता है। यही कारण है कि मुनचेन नाम की कोई वस्तु वहां नहीं बनाई जा सकती है जहां म्युचेन पहले से मौजूद है।


0

RFC2849 के अनुसार , UTF-8 डेटा वाले किसी भी लुकअप को बेस 64-एनकोडेड होना चाहिए। बेस स्ट्रिंग-पूरी एन्कोडिंग की कोशिश करें (आपके द्वारा हटा दी गई जानकारी सहित) और उसी के आधार पर सर्च करें।


हम्म, कम से कम ldapsearch ... -b 'T1U9TcO8bmNo...hbA=='काम नहीं करता। जाहिरा तौर पर कुछ तंत्र ldapsearch को सूचित करने के लिए कि -bपैरामीटर base64 है-एन्कोडेड की आवश्यकता होगी।
हेगन वॉन एटिजन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.