एएसपी के लिए सी # .NET में एलडीएपी सक्रिय निर्देशिका से उपयोगकर्ता के उपयोगकर्ता समूह को कैसे प्राप्त करें। मेरे परिदृश्य में मैं उपयोगकर्ता नाम को विधि में पास करना चाहता हूं जो एलडीएपी सक्रिय निर्देशिका से पूछताछ करता है और मुझे बताएं कि मेरा उपयोगकर्ता इस उपयोगकर्ता समूह का सदस्य है। कृपयाउपयोगकर्ता समूहों के लिए एलडीएपी से प्रश्न
उत्तर
आप .NET 3.5 या नए पर हैं, तो आप भी नए System.DirectoryServices.AccountManagement
(S.DS.AM) नामस्थान उपयोग कर सकते हैं।
// create context for domain
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find the user
UserPrincipal up = UserPrincipal.FindByIdentity(ctx, "YourUserName");
if(up != null)
{
// get groups for that user
var authGroups = up.GetAuthorizationGroups();
}
नई S.DS.AM नाम स्थान के बारे में और अधिक पढ़ें::
इस के साथ, आप की तरह कुछ कर सकते हैं
Managing Directory Security Principals in the .NET Framework 3.5
System.DirectoryServices नामस्थान का उपयोग करने में मेरी सहायता करें। आप उपयोगकर्ता को खोजने के लिए DirectorySearcher का उपयोग कर सकते हैं। एक बार जब आप है कि उपयोगकर्ता के लिए DirectoryEntry वस्तु ऐसा करते हैं:
public List<string> GetMemberOf(DirectoryEntry de)
{
List<string> memberof = new List<string>();
foreach (object oMember in de.Properties["memberOf"])
{
memberof.Add(oMember.ToString());
}
return memberof;
}
यह तार जो समूह नाम हैं उपयोगकर्ता का एक सदस्य है की एक सूची वापस आ जाएगी।
बेशक आप निर्देशिका खोजकर्ता कोड को शामिल करने के लिए इसे और परिशोधित कर सकते हैं ताकि आप केवल samAccountName फ़ंक्शन को पास कर सकें।
एक एलडीएपी क्वेरी को पूर्ववत करने के लिए DirectorySearcher क्लास का उपयोग करें।
संदर्भ के लिए:
इस कोशिश ...
public override string[] GetRolesForUser(string username)
{
var allRoles = new List<string>();
var root = new DirectoryEntry(WebConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString,
ConnectionUsername,
ConnectionPassword);
var searcher = new DirectorySearcher(root,
string.Format(CultureInfo.InvariantCulture, "(&(objectClass=user)({0}={1}))",
AttributeMapUsername,
username));
searcher.PropertiesToLoad.Add("memberOf");
SearchResult result = searcher.FindOne();
if (result != null && !string.IsNullOrEmpty(result.Path))
{
DirectoryEntry user = result.GetDirectoryEntry();
PropertyValueCollection groups = user.Properties["memberOf"];
foreach (string path in groups)
{
string[] parts = path.Split(',');
if (parts.Length > 0)
{
foreach (string part in parts)
{
string[] p = part.Split('=');
if (p[0].Equals("cn", StringComparison.OrdinalIgnoreCase))
{
allRoles.Add(p[1]);
}
}
}
}
}
return allRoles.ToArray();
}
मुझे लगता है कि ऊपर सूचीबद्ध अधिकांश विधियों को काम करना चाहिए, लेकिन मैं यह सुनिश्चित करने के लिए कोड जोड़ने का सुझाव दूंगा कि आपका कोड "नेस्टेड समूह सदस्यता में परिपत्र लूप का पता लगा सकता है", और यदि पाया जाता है, तो किसी भी अनंत लूप को तोड़ दें कि आपकी पसंद की स्क्रिप्ट संभावित रूप से हो सकती है।
मुझे उपयोगकर्ता को प्रमाणित करने की एक विधि और एक जांच की आवश्यकता है कि वे एक विशिष्ट उपयोगकर्ता समूह में हैं या नहीं। मैंने उपयोगकर्ता नाम और पासवर्ड को दबाकर और "सदस्य" संपत्ति को 'खोज' उदाहरण में लोड करके किया। नीचे दिया गया उदाहरण उस विशिष्ट उपयोगकर्ता नाम के लिए सभी समूहों को प्रदर्शित करेगा। 'पकड़' कथन गलत उपयोगकर्ता नाम या पासवर्ड को फंस जाएगा।
DirectoryEntry entry = new DirectoryEntry("LDAP://xxxxxxxx/OU=xxxxxxx,DC=xxxxxx,DC=xxxxx,DC=xxxxxx", strLdapUserName, strLdapPassword);
try
{
//the object is needed to fire off the ldap connection
object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + strLdapUserName + ")";
search.PropertiesToLoad.Add("memberOf");
SearchResult result = search.FindOne();
string filterAttribute = (String)result.Properties["cn"][0];
foreach(string groupMemberShipName in result.Properties["memberOf"])
{
Console.WriteLine("Member of - {0}", groupMemberShipName);
}
}
catch (Exception ex)
{
//failed to authenticate
throw new Exception(ex.ToString());
}
उम्मीद है कि इससे मदद मिलती है। (सिस्टम को संदर्भित करना याद रखें। डायरेक्टरी सर्विसेज)
- 1. एलडीएपी उपयोगकर्ता को जिरा
- 2. मैं एलडीएपी के साथ अपने समूहों के लिए एक संगठनात्मक इकाई से कैसे पूछूं?
- 3. एलडीएपी
- 4. समूहों के लिए बॉक्सप्लॉट?
- 5. परिभाषित उपयोगकर्ता के लिए सभी समूहों का निर्धारण
- 6. रूबी या रेल के माध्यम से एलडीएपी
- 7. एडी एलडीएपी के माध्यम से - मैं सभी पूर्वजों को एक प्रश्न से कैसे वापस कर सकता हूं?
- 8. एलडीएपी
- 9. PHP एलडीएपी एसोसिएटेड समूह समेत उपयोगकर्ता विशेषताओं को प्राप्त करें
- 10. पदानुक्रमित समूहों के लिए डेटाबेस स्कीमा
- 11. केकेपीएचपी (एलडीएपी)
- 12. एलडीएपी
- 13. एलडीएपी: कनेक्शन विवरण के साथ उपयोगकर्ता को प्रमाणीकृत कैसे करें
- 14. एलडीएपी
- 15. इष्टतम समूहों को खोजने के लिए एल्गोरिदम
- 16. एलडीएपी उपयोगकर्ताओं
- 17. एलडीएपी क्वेरी
- 18. स्प्रिंग एलडीएपी - सफल कनेक्शन के लिए बाध्य
- 19. दीवार प्रश्न से दूसरे के लिए सी #
- 20. मेरे वेब ऐप के लिए एलडीएपी एकीकरण कैसे बनाया जाए?
- 21. संतुलन समूहों
- 22. परीक्षण एलडीएपी कनेक्शन
- 23. फ्लास्क-लॉगिन और एलडीएपी
- 24. स्प्रिंग एलडीएपी अपवाद - कोई उपयोगकर्ता डिस्प्ले सेवा पंजीकृत नहीं है
- 25. जेएनडीआई का उपयोग कर एलडीएपी उपयोगकर्ता पासवर्ड प्रमाणीकरण
- 26. उपयोगकर्ता नाम और पासवर्ड का उपयोग कर जावा एलडीएपी प्रमाणीकरण
- 27. बनाना समूहों
- 28. एलडीएपी इंजेक्शन
- 29. क्या एलडीएपी
- 30. एसएसएच सुरंग के माध्यम से एलडीएपी एक्सेस करना