คุณควรสร้างแบบสอบถามด้วยตัวกรองนี้ได้ที่นี่:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
และเมื่อคุณเรียกใช้สิ่งนั้นกับเซิร์ฟเวอร์ LDAP ของคุณหากคุณได้รับผลลัพธ์ผู้ใช้ "yourUserName" ของคุณเป็นสมาชิกของกลุ่ม "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
ลองดูว่าได้ผลไหม!
หากคุณใช้ C # / VB.Net และ System.DirectoryServices ตัวอย่างข้อมูลนี้ควรทำเคล็ดลับ:
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");
DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;
srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberOf=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";
SearchResultCollection res = srch.FindAll();
if(res == null || res.Count <= 0) {
Console.WriteLine("This user is *NOT* member of that group");
} else {
Console.WriteLine("This user is INDEED a member of that group");
}
คำเตือน: สิ่งนี้จะทดสอบเฉพาะการเป็นสมาชิกกลุ่มทันทีและจะไม่ทดสอบการเป็นสมาชิกในสิ่งที่เรียกว่า "กลุ่มหลัก" (โดยปกติคือ "cn = Users") ในโดเมนของคุณ ไม่จัดการการเป็นสมาชิกแบบซ้อนกันเช่นผู้ใช้ A เป็นสมาชิกของกลุ่ม A ซึ่งเป็นสมาชิกของกลุ่ม B - ข้อเท็จจริงที่ว่าผู้ใช้ A เป็นสมาชิกของกลุ่ม B จริง ๆ เช่นกันไม่ได้รับการสะท้อนที่นี่
มาร์ค