2010-01-30 7 views
8

में सक्रिय डायरेक्टरी के साथ प्रारंभ करना मैं सी # और डब्ल्यूपीएफ में लिखे गए .NET अनुप्रयोग पर काम कर रहा हूं। इस एप्लिकेशन में हम उपयोगकर्ताओं को Active Directory सर्वर की ओर प्रमाणित करेंगे। अंत में हम अन्य LDAP कार्यान्वयन का भी समर्थन करना चाहेंगे, इसलिए यदि मैं इसे सक्रिय डायरेक्टरी-विशिष्ट के बिना बना सकता हूं जो एक लाभ होगा।सी #

इसके साथ शुरू करने का सबसे अच्छा तरीका क्या है? क्या कोई अच्छा संसाधन है जो मुझे देखना चाहिए? मैंने सुना है कि सक्रिय निर्देशिका के साथ संचार को संभालने के लिए .NET में एक लाइब्रेरी है - या क्या कोई सामान्य एलडीएपी लाइब्रेरी है? किसी भी सलाह की सराहना की है!

नोट: मैं .NET 3.5 का उपयोग कर रहा हूं।

उत्तर

5

.NET 3.5 ने System.DirectoryServices.AccountManagement नामस्थान जोड़कर यह बहुत आसान बना दिया। जब तक आप .NET 3.5 पर नहीं हैं, मैं सीधे इस नामस्थान में जाऊंगा। सामान्य रूप से, The Code Project में something up showing a lot of example uses है।

सादगी उदाहरण के लिए, एक उपयोगकर्ता के सत्यापन:

var pc = new PrincipalContext(ContextType.Domain, "MyDomain", "DC=MyDomain,DC=com"); 
return pc.ValidateCredentials(username, pass); 
2

यदि आप .NET 3.5 पर हैं, तो निश्चित रूप से System.DirectoryServices.AccountManagement नामस्थान देखें - इससे पहले चीजें बहुत आसान हो गईं!

इस एमएसडीएन आलेख को भी देखें Managing Directory Security Principals in the .NET Framework 3.5 विषय पर - अत्यधिक अनुशंसित!

आप "सामान्य" रहेगी और अन्य LDAP निर्देशिकाओं का समर्थन करने की जरूरत है, तो आप भी Introduction to System.DirectoryServices.Protocol पर एक नज़र जो Microsoft .NET विधानसभा और नाम स्थान जो निचले स्तर LDAP कॉल के साथ संबंधित है और किसी भी के खिलाफ काम करना चाहिए है के लिए चाहते हो सकता है एलडीएपी अनुपालन निर्देशिका (सूर्य, नोवेल इत्यादि)

4

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

मैं System.DirectoryServices.Protocols असेंबली की अनुशंसा करता हूं। शुरुआत करने के लिए यह थोड़ा कठिन है और इसके लिए थोड़ा अधिक प्रयास की आवश्यकता होगी, लेकिन आपको बेहतर प्रदर्शन के साथ यह अधिक लचीला लगेगा और यह कहीं अधिक मानक-अनुरूप है। मुझे एडी समेत कई अलग-अलग निर्देशिकाओं के खिलाफ इसका उपयोग करके बड़ी सफलता मिली है।

एमएसडीएन के पास शानदार introduction article है, जिसमें आपको अधिकतर परिदृश्यों की आवश्यकता होगी।

0

आप निम्न (क्योंकि यह खुला स्रोत आप पता लगा सकते हैं कि कैसे DirectoryEntry साथ ई संचालित करने के लिए है, DirectoryEntry केवल LDAP प्रोटोकॉल का समर्थन नहीं कर रहा है के रूप में ActiveRecord पैटर्न पर मेरी ओएसएस परियोजना जो आधार उल्लेख कर सकते हैं, लेकिन यह भी, IIS विन और इतने पर, इसलिए मैं इस lib का विकास):

using (var userObject = UserObject.FindOneByCN(this.ADOperator, “pangxiaoliang”)) 
{ 
    if(userObject.Email == "[email protected]") 
    { 
      userObject.Email = "[email protected]"; 
      userObject.Save(); 
    } 
} 

https://landpyactivedirectory.codeplex.com/documentation

और आप इसे आसान इसके साथ ई संचालित करने के लिए, यदि आप कोई दिलचस्पी के साथ यह कृपया मेरा उत्तर उपेक्षा है मिल जाएगा। एडी के बारे में कोई सवाल कृपया मुझसे संपर्क करें :)