Bạn sẽ có thể tạo một truy vấn với bộ lọc này tại đây:
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
và khi bạn chạy nó với máy chủ LDAP của bạn, nếu bạn nhận được 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 điều này làm việc!
Nếu bạn sử dụng C # / VB.Net và System.DirectoryService, đoạn mã này sẽ thực hiện thủ thuật:
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ưu ý: điều này sẽ chỉ kiểm tra tư cách thành viên nhóm ngay lập tức và nó sẽ không kiểm tra tư cách thành viên trong cái được gọi là "nhóm chính" (thường là "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