मैं एक Openldap सर्वर पर रिवर्स ग्रुप सदस्यता रखरखाव को कैसे कॉन्फ़िगर करूं? (का सदस्य)


18

मैं वर्तमान में LDAP प्रमाणीकरण को एक प्रणाली में एकीकृत करने पर काम कर रहा हूं और मैं LDAP समूह के आधार पर पहुंच को प्रतिबंधित करना चाहूंगा। ऐसा करने का एकमात्र तरीका खोज फ़िल्टर के माध्यम से है और इसलिए मेरा मानना ​​है कि मेरे खोज फ़िल्टर में "मेंबरऑफ़" विशेषता का उपयोग करने का मेरा एकमात्र विकल्प है। यह मेरी समझ है कि "सदस्यऑफ" विशेषता एक परिचालन विशेषता है जो सर्वर द्वारा मेरे लिए कभी भी बनाई जा सकती है, सर्वर पर किसी भी "ग्रुपऑफनेम" प्रविष्टि के लिए एक नया "सदस्य" विशेषता बनाई जाती है। मेरा मुख्य लक्ष्य एक मौजूदा "groupOfNames" प्रविष्टि में "सदस्य" विशेषता जोड़ने में सक्षम होना है और एक मिलान "सदस्यओफ़" विशेषता है जिसे मैं प्रदान करने वाले डीएन में जोड़ा जा सकता हूं।

मैंने अब तक क्या हासिल किया है:

मैं अभी भी एलडीएपी प्रशासन के लिए बहुत नया हूं, लेकिन ओपनडैप एडमिन के गाइड में मुझे जो मिला है, उसके आधार पर, यह रिवर्स ग्रुप मेंबरशिप मैनटेंस उर्फ "मेंडॉफ़ ओवरले" जैसा दिखता है, ठीक वैसा ही प्रभाव प्राप्त करेगा जैसा मैं देख रहा हूं।

मेरा सर्वर वर्तमान में Openldap 2.4.15 का एक पैकेज इंस्टालेशन (ubuntu पर थप्पड़) चला रहा है जो "cn = config" स्टाइल रनटाइम कॉन्फ़िगरेशन का उपयोग करता है। अधिकांश उदाहरण मुझे अभी भी पुराने "slapd.conf" स्थैतिक विन्यास के संदर्भ में मिलते हैं और मैंने नई निर्देशिका आधारित मॉडल के विन्यास को अनुकूलित करने की पूरी कोशिश की है।

मैंने निम्नलिखित प्रविष्टियाँ जोड़ दी हैं ताकि मेम्बरऑफ ओवरले मॉड्यूल को सक्षम किया जा सके:

OlcModuleLoad के साथ मॉड्यूल सक्षम करें

cn=config/cn\=module\{0\}.ldif

dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z

डेटाबेस के लिए ओवरले को सक्षम किया और इसे डिफ़ॉल्ट सेटिंग्स (ग्रुपऑफनेम, सदस्य, सदस्यऑफ आदि) का उपयोग करने की अनुमति दी।

cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof

dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: 20091009104412Z
olcMemberOfRefInt: TRUE
entryCSN: 20091009173500.139380Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009173500Z

मेरा वर्तमान परिणाम:

उपरोक्त कॉन्फ़िगरेशन का उपयोग करके, मैं "सदस्य" प्रविष्टियों में से किसी भी संख्या के साथ एक नया "groupOfNames" जोड़ने में सक्षम हूं और सभी "" सदस्य "विशेषता के साथ अद्यतन किए गए डीएन शामिल हैं। यह मेरे द्वारा किए जाने वाले व्यवहार का हिस्सा है। जबकि मेरा मानना ​​है कि सदस्य के ओवरले के साथ निम्नलिखित को पूरा किया जाना चाहिए था, फिर भी मुझे नहीं पता कि निम्नलिखित कैसे करना है और मैं खुशी से किसी भी सलाह का स्वागत करूंगा:

  1. एक "समूह" विशेषता को एक "ग्रुपऑफनेम" में जोड़ें और एक संबंधित "सदस्यऑफ" विशेषता को स्वचालित रूप से बनाया जाए।
  2. "सदस्य" विशेषता को निकालें और संबंधित "सदस्य" विशेषता को स्वचालित रूप से हटा दें।

जवाबों:


10

मैं एक ही बात के साथ संघर्ष कर रहा हूं, ओपनडैप डॉक्यूमेंट न्यूनतम है और शायद ही सहायक हो। जब वे एक कॉन्फ़िगर डेटाबेस (सिद्धांत में एक बुरा विचार नहीं) पर चले गए, तो सभी विकल्प बदल गए ताकि जब लोग /etc/ldap/slapd.conf से उदाहरण दे रहे हों, तो यह आधुनिक थप्पड़ विन्यास (जैसे कि उबंटू) के साथ बेकार है।

मुझे आखिरकार यह काम मिल गया। यहाँ सारांश है ... पहली LDIF फ़ाइल:

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof

दूसरी LDIF फ़ाइल:

dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf

उन्हें ldapadd (सामान्य कॉन्फिगर सामान के समान) का उपयोग करके कॉन्फ़िगर डेटाबेस में जोड़ें।

यह डेटाबेस में मौजूदा डेटा को स्वचालित रूप से अपडेट नहीं करता है , इसलिए मुझे एक अस्थायी फ़ाइल में सब कुछ कॉपी करने के लिए स्लैपकाट का उपयोग करने की आवश्यकता है, और प्रत्येक समूह पर जाएं, समूह को हटाएं और उसी समूह को फिर से जोड़ दें (सदस्य को अपडेट करने के लिए मजबूर करता है सही ढंग से)। यदि आप एक खाली डेटाबेस से शुरू कर रहे हैं, तो यह विशेषताओं को सही ढंग से अपडेट करेगा क्योंकि ऑब्जेक्ट जोड़े जाते हैं।

इसके अलावा, ध्यान दें कि "olcDatabase = {1} hdb" बहुत विशिष्ट है, लेकिन आपके सेटअप से मेल खाने की गारंटी नहीं है। उस एक को अवश्य देखें।


1
क्या slapadd(रुके हुए डेटाबेस पर) इसे करने का सही तरीका नहीं है?
mad_vs

11

मैंने हाल ही में अपने ब्लॉग www.jordaneunson.com पर इसके बारे में लिखा था। मैंने इसमें संबंधित भागों को कॉपी और पेस्ट किया था।

मुझे जो करना था, उसने अपने LDAP सर्वर पर "थप्पड़" सेवा को रोक दिया और मेरी slapd.conf फ़ाइल को संपादित किया और निम्नलिखित दो पंक्तियों को जोड़ा।

moduleload memberof.la
overlay memberof

मेरे पास पहले से ही एक GroupOfNames था, जिसे vpn कहा जाता था, इसलिए मुझे निम्नलिखित सामग्रियों के साथ LDIF फ़ाइल बनानी थी:

dn: cn=vpn,ou=Groups,dc=shop,dc=lan
objectclass: groupofnames
cn: vpn
description: Users allowed to connect on VPN
member: uid=jordan,ou=People,dc=shop,dc=lan

और इसे मेरे ldap डेटाबेस में जोड़ा

slapadd -f file.ldif

इसके बाद मैंने त्रुटियों की जांच करने के लिए डीबग में ldap सर्वर को निकाल दिया

slapd -d 99 -f /etc/ldap/slapd.conf 

और यह सुनिश्चित करने के लिए जाँच की गई कि "vpn" की मेरी समूह सदस्यता मेरे उपयोगकर्ता प्रविष्टि में सूचीबद्ध थी।

ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf 

और बाम! सफलता!

jordan, People, shop.lan
dn: uid=jordan,ou=People,dc=shop,dc=lan
memberOf: cn=vpn,ou=Groups,dc=shop,dc=lan

इसलिए मैंने थप्पड़ सेवा को वापस निकाल दिया और तब से बहुत सफलता मिली। एक नए GUI प्रबंधन उपकरण के लिए मैं phpLDAPAdmin का उपयोग कर रहा हूं और मुझे अपने उपयोगकर्ताओं को निर्दिष्ट और अनसाइन किए जा रहे सदस्य की कोई समस्या नहीं है।

ध्यान देने वाली एक अंतिम बात यह है कि "मेंबरऑफ" विशेषता बुनियादी LDAP v3 स्कीमा का हिस्सा नहीं है और इस तरह एक ldapsearch कर रहा है जब तक कि विशेष रूप से queried इस विशेषता को प्रकट नहीं करेगा। यही कारण है कि मेरे उपरोक्त उदाहरण में इसे ldapsearch के मापदंडों के अंत में घोषित किया गया है।

उम्मीद है की यह मदद करेगा।

संपादित करें: मैंने बस अपाचे डायरेक्टरी स्टूडियो के साथ आपकी समस्या का परीक्षण किया: जब तक मैं विशेषता सदस्य मूल्य में एक पूरे के रूप में दर्ज करता हूं, जैसा कि ऊपर उल्लेख किया गया है यह ए-ओके काम करता है। हालाँकि सदस्यऑफ विशेषता उपयोगकर्ता प्रविष्टि में दिखाई नहीं देती है। ऐसा इसलिए है क्योंकि MemberOf विशेषता LDAPv3 स्कीमा का हिस्सा नहीं है। यह सत्यापित करने के लिए कि यह कमांड लाइन टूल का उपयोग है ldapsearch:

ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf 

1
मॉड्यूल लोड हो रहा है और ओवरले जोड़ना वास्तव में मैंने दुर्भाग्य से किया था। जैसा कि मैंने कहा कि समस्या यह नहीं है कि "groupOf" विशेषताओं को नए groupOfNames प्रविष्टियों के लिए नहीं जोड़ा गया है, यह है कि जब मैं बस किसी मौजूदा समूह में "सदस्य" विशेषता जोड़ता हूं तो उन्हें जोड़ा नहीं जा रहा है। मैं वर्तमान में अपने LDAP को ब्राउज़ करने और कॉन्फ़िगर करने के लिए Apache Directory Studio का उपयोग कर रहा हूं ताकि जब मैं ब्राउज़ करूँ तो यह सदस्यऑफ प्रविष्टियाँ दिखाता है। यह उनके छिपे होने की बात नहीं है।
निकलता है

1
आप GroupOfNames में सदस्य विशेषता कैसे बना रहे हैं? क्या यह पूरे DN का उपयोग कर रहा है? जैसे: "uid = user, ou = People, dc = corp, dc = org" या आप सिर्फ उनके उपयोगकर्ता नाम भर रहे हैं? काम करने के लिए रिवर्स मैपिंग के लिए आपको पूरे डीएन का उपयोग करने की आवश्यकता है ताकि सदस्यओफ को पता चल सके कि रिवर्स मैप को कहां रखा जाए।
जॉर्डन यूसन

1
संपादित करें: मैंने बस अपाचे डायरेक्टरी स्टूडियो के साथ आपकी समस्या का परीक्षण किया, जब तक कि मैं विशेषता सदस्य मूल्य को समग्र रूप से दर्ज करता हूं, जैसा कि ऊपर उल्लेख किया गया है कि यह ए-ओके काम करता है। हालाँकि सदस्यऑफ विशेषता उपयोगकर्ता प्रविष्टि में दिखाई नहीं देती है। ऐसा इसलिए है क्योंकि MemberOf विशेषता LDAPv3 स्कीमा का हिस्सा नहीं है। यह सत्यापित करने के लिए कि कमांड लाइन टूल ldapsearch का उपयोग है। <कोड> ldapsearch -h ldap -x -b "dc = shop, dc = lan" '(uid = jordan)' सदस्यऑफ </ code>
जॉर्डन यूंसन

1
मैं सदस्य प्रविष्टि में डीएन का उपयोग कर रहा हूं। यह इसे देखने की बात नहीं है, जैसा कि मैंने पहले ही कहा था, वे केवल एक नए समूह के साथ जुड़ जाते हैं (और इसलिए दिखाई देते हैं) एक नया समूह जोड़ा जाता है, तब नहीं जब मैं किसी सदस्य को एक एक्सिसिटिंग समूह में शामिल करता हूं।
इम' भरता है

1
<उद्धरण> वे केवल जोड़ते हैं (और इसलिए दिखाई देते हैं) </ उद्धरण> मुझे क्षमा करें लेकिन यह कथन गलत है। जब तक आप इसके लिए विशेष रूप से क्वेरी नहीं करते हैं, सदस्य विशेषता दिखाई नहीं देती है। क्या आप ऊपर सूचीबद्ध ldapsearch कमांड का आउटपुट पोस्ट कर सकते हैं? उपयोगकर्ता को एक सदस्य में बदलें, जिसके पास एक सदस्य होने का गुण होना चाहिए , लेकिन ऐसा नहीं है।
जॉर्डन यूसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.