Apache LDAP में नेस्टेड समूहों में उपयोगकर्ताओं को कैसे प्रमाणित करें?


21

मैंने निम्नलिखित सेटअप के साथ LDAP प्रमाणीकरण काम कर रहा है

 AuthName            "whatever"
 AuthType            Basic
 AuthBasicProvider   ldap
 AuthLDAPUrl         "ldap://server/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
 Require ldap-group  CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local

यह काम करता है, हालांकि मुझे उन सभी उपयोगकर्ताओं को डालना है जिन्हें मैं प्रमाणित करना चाहता हूं MySpecificGroup। लेकिन LDAP सर्वर पर मैंने कॉन्फ़िगर किया है MySpecificGroupजिसमें MyOtherGroupउपयोगकर्ताओं की एक और सूची वाला समूह भी है ।

लेकिन उन उपयोगकर्ताओं को MyOtherGroupप्रमाणित नहीं किया गया है, मैंने उन्हें सभी को मैन्युअल रूप से जोड़ना है MySpecificGroupऔर मूल रूप से नेस्टेड ग्रुपिंग का उपयोग नहीं कर सकते हैं। मैं Windows SBS 2003 का उपयोग कर रहा हूं।

क्या ऐसा करने के लिए अपाचे LDAP को कॉन्फ़िगर करने का कोई तरीका है? या क्या संभावित अनंत पुनरावृत्ति की समस्या है और इस प्रकार इसकी अनुमति नहीं है?

जवाबों:


19

आपको AuthLDAPSubGroupDepthयह कार्य करने के लिए सेट करने की आवश्यकता है । आपके द्वारा यहां प्रदान किया जाने वाला पूर्णांक अधिकतम उप-समूह घोंसले की गहराई को निर्दिष्ट करता है जिसका मूल्यांकन उपयोगकर्ता खोज बंद होने से पहले किया जाएगा।

इसे अपने कॉन्फिगर में जोड़ें:

AuthLDAPSubGroupDepth 1

अधिक जानकारी: यहाँ और यहाँ


: मैं Apache 2.2 चल रहा हूँ, यह mod_authnz_ldap नहीं AuthLDAPSubGroupDepth डायरेक्टिव है httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html
Selivanov पावेल

तो, अद्यतन क्यों नहीं?
बार्ट डे वोस

2
मैं डेबियन स्क्वीज़ चला रहा हूं और मैं स्थिर वितरण से संकुल का उपयोग करना पसंद करता हूं: अच्छी तरह से परीक्षण, नियमित सुरक्षा अपडेट। Apache 2.3 अभी भी बीटा है, यह जल्द ही स्थिर या स्थिर-बैकपोर्ट में दिखाई देगा। मैंने AuthnProviderAliasअभी तक उपयोग करके इस समस्या को हल कर दिया है । यदि कोई अपाचे 2.2 के लिए समाधान की पेशकश नहीं करेगा, तो इनाम आपका है :)
सेलिवानोव पावेल

समूहों की नई जानकारी विभिन्न सर्वरों पर दी जा रही है, मुझे नहीं लगता कि यह विधि अभी भी काम करेगी।
जेफ स्ट्रंक

3
AuthLDAPSubGroupDepth अपाचे HTTPd 2.4 में मौजूद नहीं है। AuthLDAPMaxSubGroupDepth का उपयोग करने के लिए सही निर्देश है।
क्रिस हैरिस

33

इसके अलावा AuthLDAPSubGroupDepth, यह केवल अपाचे 2.4 में उपलब्ध है, यह संभव है, जब Microsoft AD LDAP का उपयोग करते हुए, LDAP_MATCHING_RULE_IN_CHAIN ​​मिलान नियम का उपयोग करके नेस्टेड समूहों का उपयोग करके प्राधिकरण किया जाए। यह क्लाइंट पर उपसमूहों को खोजने की तुलना में बहुत तेज़ है, क्योंकि यह डीसी सर्वर पर नेटवर्क पर कम प्रश्नों के साथ किया जाता है।

Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=Access to Apache,OU=My Organization Unit,DC=company,DC=com

स्ट्रिंग 1.2.840.113556.1.4.1941एक OID कहलाती है LDAP_MATCHING_RULE_IN_CHAIN। इस OID को Microsoft द्वारा अपने LDAP कार्यान्वयन (सक्रिय निर्देशिका का हिस्सा) के साथ उपयोग करने के लिए सौंपा गया है। आप इसे अन्य LDAP सर्वर के साथ उपयोग नहीं कर सकते। मानव पुन: प्रयोज्य प्रारूप है:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)

Microsoft दस्तावेज़ से:

यह नियम डीएन पर लागू होने वाले फिल्टर तक सीमित है। यह एक विशेष "विस्तारित" मैच ऑपरेटर है जो रूट के सभी तरह से ऑब्जेक्ट्स में वंश की श्रृंखला को चलाता है जब तक कि यह एक मैच नहीं पाता।

यह भी देखें:


अगर मैं कर सकता तो मैं इस 10x को बढ़ा देता। RHEL 5 चलाने वाले लोगों के लिए, यह एक बढ़िया उपाय है। नवीनतम सुविधाओं को प्राप्त करने के लिए विक्रेता स्रोत का संकलन हमेशा एक वांछनीय समाधान नहीं होता है!
एरॉन कोपले

मुझे खुशी है कि इसने मदद की। मुझे लगता है कि यह Apache में LDAP_MATCHING_RULE_IN_CHAIN ​​का पहला प्रलेखित उपयोग था।
22ea पर Mircea Vutcovici

क्या LDAP_MATCHING_RULE_IN_CHAINपुनरावर्ती समूह की सदस्यता को पुनः प्राप्त करने और इसे बैकएंड सर्वर के हेडर के रूप में पास करने के लिए उपयोग करने का एक तरीका है (अपाचे को रिवर्स प्रॉक्सी के रूप में उपयोग करके) ??
गेर्शोन पापी

mod_authnz_ldapयह प्रदान नहीं करता है। हालाँकि आप LDAP_MATCHING_RULE_IN_CHAINअपने ऐप्लिकेशन में LDAP फ़िल्टर का उपयोग कर सकते हैं । देखें: stackoverflow.com/a/34075052/290087
Mircea Vutcovici

6

ऐसा लगता है कि Apache 2.2 में आपका एकमात्र विकल्प प्रत्येक समूह को सूचीबद्ध करना है जो आपके मुख्य अधिकृत समूह द्वारा शामिल है।

Require ldap-group  CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Require ldap-group  CN=MyOtherGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local

यदि आपके नेस्टेड समूह बहुत जटिल नहीं हैं तो यह उचित होना चाहिए।


AD डोमेन पार करना (दो LDAP सर्वर का उपयोग करना)

आप अपने प्रमाणीकरण को प्रॉक्सी करने के लिए अपने वेब सर्वर पर चल रहे slapd_meta ओवरले के साथ OpenLDAP सेट कर सकते हैं ।

/etc/ldap/slapd.conf कुछ इस तरह दिखना चाहिए:

database meta
suffix   "DC=company,DC=local"
uri      "ldap://a.foo.com/OU=MyBusiness,DC=company,DC=local"
uri      "ldap://b.foo.com/OU=otherdomainsuffix,DC=company,DC=local"

तब, आपका mod_authnz_ldap श्लोक कुछ इस तरह दिखाई देगा:

AuthName            "whatever"
AuthType            Basic
AuthBasicProvider   ldap
AuthLDAPUrl         "ldapi:///DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
Require ldap-group  CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Require ldap-group  CN=MyOtherGroup,OU=Security Groups,OU=otherdomainsuffix,DC=company,DC=local

इसे काम करने के लिए कुछ मालिश की आवश्यकता होगी, लेकिन मुझे लगता है कि यह सामान्य विचार है।


1
दुर्भाग्य से यह तब काम नहीं करता है जब समूह अलग-अलग AD डोमेन में होते हैं (Domain1_DomainLocal_Group में Domain2_Global_Group शामिल हैं)। यह पहली चीज़ थी जो मैंने
आजमाई थी

क्या इसका मतलब यह है कि समूहों में से एक अलग सर्वर पर है? अगर यह सच है, मुझे संदेह है कि AuthLDAPSubGroupDepth आपके लिए भी काम नहीं करेगा।
जेफ स्ट्रंक

हां, दो सर्वर, दो डोमेन। मैंने AD में लिनक्स बॉक्स को एकीकृत करने और PAM प्रमाणीकरण का उपयोग करने के बारे में विचार किया, लेकिन Apache 2.0 के बाद से mod-Cort-pam समर्थित नहीं है, mod-Cortnz-external + pwauth समूहों का समर्थन नहीं करता है। यह सब दुख की बात है :(
सेलिवानोव पावेल

1
ओह, मैंने ध्यान नहीं दिया कि आपने उत्तर को अपडेट किया है। OpenLDAP का उपयोग कर slapd_meta समाधान हो सकता है, लेकिन यह इस कॉन्फ़िगरेशन के मुख्य बिंदु को मारता है: उपयोगकर्ता अधिकारों को एक एकल बिंदु (सक्रिय निर्देशिका) में प्रबंधित करें, समूहों से और एक दूसरे में समूहों सहित उपयोगकर्ताओं को हटाकर। यहां अतिरिक्त OpenLDAP सेवा के बिना AuthnProviderAlias ​​के साथ मेरा एनालॉग समाधान है: <AuthnProviderAlias ​​ldap पहला-ldap> AuthLDAPURL ... </ AuthnProviderAlias> <AuthnProviderAlias ​​ldap दूसरा-ldap> AuthLDAPURL ... / AuthnProviderAlias ​​... / AuthnProviderAlias -लापप
पावेल

1
मैं बॉट डी वॉस को इनाम देने का फैसला करता हूं: यह मेरा सवाल नहीं है; मूल प्रश्न के लिए (मेरे अपने विशिष्ट के बिना) उसका समाधान सरल है और काम करेगा
सेलिवानोव पावेल

4

जबकि @Mircea_Vutcovici द्वारा प्रदान किए गए समाधान ने मेरे लिए काम किया, मेरी एकमात्र आलोचना यह है कि जब लोग उपयोग में बिटवाइज़ ऑपरेटरों को देखते हैं, तो वे स्क्विश हो सकते हैं।

उदाहरण के लिए, मैं अपाचे ब्लडहाउंड इंस्टालेशन को सौंप दूंगा, जो कि अपाचे एचटीटीपी का उपयोग एडी ग्रुप ऑडर के साथ फ्रंट एंड के रूप में करता है, साथी डेवलपर्स के समूह को। वे बिटवाइज़ ऑपरेटरों के साथ पकड़ में आने वाले मुद्दों के लिए जा रहे हैं। एडमिन बेशक नहीं होगा ... मुझे उम्मीद है।

कहा जा रहा है, मेरे पास एक समाधान है जो बिटकॉइन ऑपरेटर का उपयोग नहीं करता है और जो कई ldap- समूह परिभाषाओं का उपयोग नहीं करता है।

निम्नलिखित विन्यास मेरे लिए काम करता है:

<Location /protected>
    # Using this to bind
    AuthLDAPURL "ldap://<MY_SERVER>:3268/<MY_SEARCH_BASE>?sAMAccountName?sub?(objectClass=user)"
    AuthLDAPBindDN "<MY_BIND_DN>"
    AuthLDAPBindPassword "<MY_PASSWORD>"
    LDAPReferrals Off

    AuthType Basic
    AuthName "USE YOUR AD ACCOUNT"
    AuthBasicProvider ldap
    Require ldap-group <MY_PARENT_GROUP>
    AuthLDAPMaxSubGroupDepth 1
    AuthLDAPSubgroupAttribute member
    AuthLDAPSubGroupClass group
    AuthLDAPGroupAttribute member
    AuthLDAPGroupAttributeIsDN on
</Location>

महत्वपूर्ण हिस्सा निम्नलिखित विन्यास था:

AuthLDAPSubGroupClass group

AuthLDAPMaxSubGroupDepth खुद से काम नहीं करता है, न ही जब AuthLDAPSubgroupAttribute के साथ युग्मित किया जाता है। यह तभी हुआ था जब मैंने AuthLDAPSubGroupClass का उपयोग किया था, जो उप समूहों के खिलाफ काम कर रहा था ... कम से कम मेरे और मेरी स्थिति के लिए।

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