c# - सी#का उपयोग कर ASP.Net MVC से सक्रिय निर्देशिका तक पहुँचने




asp.net-mvc security (3)

एडी तक पहुंचने के लिए System.DirectoryServices नामस्थान का उपयोग करें

दो सबसे महत्वपूर्ण वर्ग हैं:

  1. निर्देशिकाइंटर्री ;
  2. निर्देशिका खोजकर्ता

मान लीजिए कि आपका डोमेन है: MyIntranet.MyCompany.com

उसके बाद, आपको DirectoryEntry वर्ग की मूल आवृत्ति बनाना होगा:

DirectoryEntry root = new DirectoryEntry("LDAP://DC=MyIntranet,DC=MyCompany,DC=com");

किसी समूह या उपयोगकर्ता के किसी विशेष अवसर के लिए एडी को खोजते समय:

DirectorySearcher searcher = new DirectorySearcher();
searcher.SearchRoot = root;
searcher.SearchScope = SearchScope.Subtree;

मान लें कि आप नामक उपयोगकर्ता नाम देखना चाहते हैं: AnyUser1 , DirectorySearcher.Filter इस तरह दिखना चाहिए:

searcher.Filter = string.Format("(&(objectCategory=person)(objectClass=user)(sAMAccountName={0})", "AnyUser1");

इसके बाद, खोज रेशल्ट वर्ग के माध्यम से परिणाम प्राप्त करें:

bool userFound = false;
SearchResult foundUser = null;

try {
    foundUser = searcher.FindOne(); // You might as well use the FindAll() method if you expect more then one result.
    userFound = foundUser != null;
} catch(Exception) {
    throw;
}

if (!userFound)
    return;

DirectoryEntry user = foundUser.GetDirectoryEntry();

फिर, आप उन समूहों को प्राप्त कर सकते हैं जो इस उपयोगकर्ता सदस्य की तरह सदस्य हैं जैसे संपत्ति का:

user.Properties("memberOf").Value

एक अच्छी सिंहावलोकन के लिए, यह CodeProject आलेख देखें: सक्रिय निर्देशिका में कैसे (लगभग) सब कुछ

और गुणों की एक सूची का: IADs उपयोगकर्ता गुण और सक्रिय निर्देशिका विशेषता के बीच मानचित्रण

# 1 को संपादित करें

यदि आप प्रतिरूपण का उपयोग कर रहे हैं, तो शायद आप अपने आवेदन जैसे कुछ DefaultRootDomain , DefaultUserName और DefaultPassword पर कुछ मानदंड सेट करने पर विचार कर सकते हैं, फिर अपने रूट DirectoroEntry एंट्री के तत्काल का उपयोग करते समय उनका उपयोग करें

public static class AdHelper {

    public static string DefaultRootDse {
        get {
            return Properties.Settings.Default.DefaultRootDomain;
        }
    }

    private static string DefaultUserName {
        get {
            return Properties.Settings.Default.DefaultUserName;
        }
    }

    private static string DefaultPassword {
        get {
            return Properties.Settings.Default.DefaultPassword;
        }
    } 

    public static DirectoryEntry RootDse {
        get {
            if (_rootDse == null)
                _rootDse = new DirectoryEntry(DefaultRootDse, DefaultUserName, DefaultPassword);
            return _rootDse;
        }
    }
    private static DirectoryEntry _rootDse;
}

मुझे उन समूहों के बारे में जानकारी प्राप्त करने के लिए सक्रिय निर्देशिका का उपयोग करना होगा जो ग्राहकों के हैं। मेरे पास प्रोजेक्ट सी # का उपयोग कर एक asp.net mvc अनुप्रयोग है। मैंने पहले कभी भी सक्रिय निर्देशिका के बारे में क्रमादेशित नहीं किया है, और इस बारे में कुछ सलाह की जरुरत है कि आरंभ करने का सबसे अच्छा तरीका क्या है, सूचना का उपयोग करने के लिए कौन सा सुरक्षा मॉडल का उपयोग किया जाए और शायद मुझे कुछ अच्छे ट्यूटोरियल्स के बारे में बताएं।



यदि आपके पास .NET 3.5 है या यदि आप इसे अपग्रेड कर सकते हैं - हर तरह से System.DirectoryServices.AccountManagement में नई सुविधा का System.DirectoryServices.AccountManagementSystem.DirectoryServices.AccountManagementSystem.DirectoryServices.AccountManagement !

अधिक जानकारी और एक तुरत प्रारम्भ के लिए MSDN पत्रिका पर .NET Framework 3.5 में एक महान परिचय लेख प्रबंध निदेशक सुरक्षा प्रिंसिपल देखें।







active-directory