আপনি যদি অ্যাক্টিভ ডিরেক্টরিতে নতুন হন, আমি পরামর্শ দিচ্ছি যে আপনার সক্রিয় ডিরেক্টরিটি কীভাবে প্রথমে ডেটা সঞ্চয় করে তা বোঝা উচিত।
অ্যাক্টিভ ডিরেক্টরি আসলে একটি এলডিএপি সার্ভার। এলডিএপি সার্ভারে সঞ্চিত বস্তুগুলি শ্রেণিবদ্ধভাবে সংরক্ষণ করা হয়। এটি আপনার ফাইল সিস্টেমে আপনার ফাইলগুলি সংরক্ষণ করার মতোই। এ কারণেই এটি নাম ডিরেক্টরি সার্ভার এবং অ্যাক্টিভ পেয়েছে ডিরেক্টরি
অ্যাক্টিভ ডিরেক্টরিতে থাকা পাত্রে এবং অবজেক্টগুলি একটি দ্বারা নির্দিষ্ট করা যেতে পারে distinguished name
। বিশিষ্ট নামটি এরকম CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
। একটি traditionalতিহ্যগত সম্পর্কযুক্ত ডাটাবেসের মতো, আপনি একটি এলডিএপি সার্ভারের বিরুদ্ধে কোয়েরি চালাতে পারেন। একে এলডিএপি কোয়েরি বলা হয়।
.NET এ LDAP ক্যোয়ারী চালানোর বেশ কয়েকটি উপায় রয়েছে। আপনি ব্যবহার করতে পারেন DirectorySearcher থেকে System.DirectoryServices
বা SearchRequest থেকে System.DirectoryServices.Protocol
।
আপনার প্রশ্নের জন্য, যেহেতু আপনি ব্যবহারকারীর প্রধান বস্তু বিশেষভাবে এটি জিজ্ঞাসা করা হয়, আমার মনে হয় সবচেয়ে স্বজ্ঞাত উপায় ব্যবহার করা PrincipalSearcher থেকে System.DirectoryServices.AccountManagement
। গুগল থেকে আপনি সহজেই প্রচুর বিভিন্ন উদাহরণ খুঁজে পেতে পারেন। এখানে একটি নমুনা যা আপনি যা চাইছেন ঠিক তা করছে।
using (var context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
Console.WriteLine("First Name: " + de.Properties["givenName"].Value);
Console.WriteLine("Last Name : " + de.Properties["sn"].Value);
Console.WriteLine("SAM account name : " + de.Properties["samAccountName"].Value);
Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value);
Console.WriteLine();
}
}
}
Console.ReadLine();
নোট করুন যে AD ব্যবহারকারী অবজেক্টে, অনেকগুলি বৈশিষ্ট্য রয়েছে। বিশেষত, givenName
আপনাকে দিবে First Name
এবং sn
আপনাকে দেবে Last Name
। ব্যবহারকারীর নাম সম্পর্কে। আমি মনে করি আপনি ব্যবহারকারী লগনের নাম বোঝাতে চেয়েছিলেন। নোট করুন যে AD ব্যবহারকারী অবজেক্টে দুটি লগন নাম রয়েছে। একটি samAccountName
, যা প্রাক উইন্ডোজ 2000 ব্যবহারকারী লগন নাম হিসাবেও পরিচিত। userPrincipalName
উইন্ডোজ 2000 এর পরে সাধারণত ব্যবহৃত হয়।