Bạn sẽ có thể tạo ra một truy vấn với bộ lọc này ở đây:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
và khi bạn chạy mà chống lại máy chủ LDAP của bạn, nếu bạn nhận được một kết quả, người dùng của bạn "yourusername" thực sự là một thành viên của nhóm "CN = YourGroup, OU = Users, DC = YOURDOMAIN, DC = com
Hãy thử và xem nếu làm việc này!
Nếu bạn sử dụng C#/VB.Net và S ystem.DirectoryServices, đoạn này nên làm như lừa:
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");
}
Lời cảnh báo: điều này sẽ chỉ kiểm tra cho thành viên nhóm ngay lập tức, và nó sẽ không kiểm tra cho các thành viên trong cái gọi là "nhóm chính" (thường " cn = Người dùng ") trong miền của bạn. Nó không xử lý các thành viên lồng nhau, ví dụ: Người dùng A là thành viên của Nhóm A là thành viên của Nhóm B - thực tế là Người dùng A thực sự là thành viên của Nhóm B cũng không được phản ánh ở đây.
Marc
Nguồn
2009-06-23 12:59:08
Xem thêm những câu hỏi như [Đệ quy truy vấn nhóm LDAP thành viên] (http://stackoverflow.com/q/7826927/1260896) –