Tôi đang cố gắng lấy thông tin người dùng cho một miền cụ thể sẽ là đầu vào của chương trình. Trên cơ sở tên miền, nó sẽ trả về danh sách tên người dùng/hoặc NT Id và SID của người dùng. Tôi mới cho lập trình ldap bất kỳ ai có thể giúp tôi để có được danh sách này.Cách lấy tên người dùng và SID cho người dùng bằng tên miền trong ldap
Trả lời
Nếu bạn đang sử dụng .NET 3.5 trở lên và nói về Active Directory, thì bạn nên kiểm tra không gian tên System.DirectoryServices.AccountManagement
(S.DS.AM). Đọc tất cả về nó ở đây:
- Managing Directory Security Principals in the .NET Framework 3.5
- MSDN docs on System.DirectoryServices.AccountManagement
Về cơ bản, bạn có thể xác định một bối cảnh miền và dễ dàng tìm người sử dụng và/hoặc nhóm trong AD:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
var usersSid = user.Sid;
// not sure what you mean by "username" - the "DisplayName" ? The "SAMAccountName"??
var username = user.DisplayName;
var userSamAccountName = user.SamAccountName;
}
Các new S.DS.AM làm cho nó thực sự dễ dàng để chơi xung quanh với người dùng và các nhóm trong AD!
Cập nhật: nếu bạn cần để lặp qua tất cả các người dùng của một miền - thử điều này:
Bạn có thể sử dụng một PrincipalSearcher
và một "truy vấn theo ví dụ" chủ yếu để làm tìm kiếm của bạn:
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// define a "query-by-example" principal - here, we search for a UserPrincipal
UserPrincipal qbeUser = new UserPrincipal(ctx);
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// find all matches
foreach(var found in srch.FindAll())
{
UserPrincipal user = found as UserPrincipal;
if(user != null)
{
// do whatever here
var usersSid = user.Sid;
// not sure what you mean by "username" - the "DisplayName" ?
var username = user.DisplayName;
var userSamAccountName = user.SamAccountName;
}
}
cập nhật # 2: nếu bạn không thể (hoặc không muốn) sử dụng phương pháp S.DS.AM
- đó là dễ dàng nhất, cho Active Directory, bởi đến nay - sau đó bạn cần phải rơi trở lại vào System.DirectoryServices
các lớp và phương pháp:
// define the root of your search
DirectoryEntry root = new DirectoryEntry("LDAP://dc=YourCompany,dc=com");
// set up DirectorySearcher
DirectorySearcher srch = new DirectorySearcher(root);
srch.Filter = "(objectCategory=Person)";
srch.SearchScope = SearchScope.Subtree;
// define properties to load
srch.PropertiesToLoad.Add("objectSid");
srch.PropertiesToLoad.Add("displayName");
// search the directory
foreach(SearchResult result in srch.FindAll())
{
// grab the data - if present
if(result.Properties["objectSid"] != null && result.Properties["objectSid"].Count > 1)
{
var sid = result.Properties["objectSid"][0];
}
if(result.Properties["displayName"] != null && result.Properties["displayName"].Count > 0)
{
var userName = result.Properties["displayName"][0].ToString();
}
}
hi, Thanx cho trả lời .. Nhưng trong trường hợp của tôi, tôi sẽ không định nghĩa bất kỳ người dùng nào .. nó sẽ là vòng lặp cho mỗi người dùng cho một tên miền perticular .. – Eshwer
@Eshwer: cập nhật phản hồi của tôi với một vòng lặp thông qua ** tất cả người dùng ** của một miền cụ thể - ** S BE S SL ** nếu bạn có nhiều người dùng. –
Xin chào .. Nhưng bạn đang chỉ định url ldap ở đâu ..? hoặc nó không được yêu cầu? trong trường hợp này từ nơi nó sẽ lấy danh sách người dùng? – Eshwer
- 1. Cách nhận tên người dùng không có tên miền
- 2. Cách lấy tên người dùng bằng PID trên Mac OS?
- 3. Lỗi trong kết nối FTP bằng tên miền, tên người dùng và mật khẩu?
- 4. Regex cho tên người dùng?
- 5. MVC3 + Cách lấy tên người dùng hiện tại đã đăng nhập của người dùng
- 6. LDAP xác thực người dùng trên khắp miền tin cậy
- 7. capistrano một tên người dùng cho nhiều người dùng
- 8. preg_match() và tên người dùng
- 9. Cách tốt nhất để giải quyết tên người dùng hiển thị bằng SID là gì?
- 10. Cách lấy tên người dùng trong C/C++ trong Linux?
- 11. Cách theo dõi người dùng trên các tên miền?
- 12. Lấy tên và họ của người dùng Windows hiện tại?
- 13. cách lấy tên người dùng từ khóa oauth trong twitter
- 14. Cách lấy Tên người dùng Windows trong WPF
- 15. Cách lấy tên nhóm người dùng trong Joomla 2.5
- 16. Chuyển đổi tên người dùng thành chuỗi SID bằng C# /. NET
- 17. CakePHP Tên người dùng URL bằng Regex?
- 18. wget và htaccess: tên người dùng chỉ
- 19. Tạo người dùng trong LDAP bằng cách sử dụng Django
- 20. Cách ánh xạ HKEY_USERS subkeys và tên người dùng Windows?
- 21. JavaScript - Cách lấy tên của người dùng hiện tại
- 22. Canonicalisation của tên người dùng
- 23. Làm cách nào để nhận tên người dùng cửa sổ hiện tại ở định dạng tên miền @ tên miền?
- 24. signalR - nhận tên người dùng
- 25. lấy tên người dùng trong Active Directory Group qua .net
- 26. FOSUserBundle: tên người dùng vs tên người dùngCanonical
- 27. regex cho tên người dùng Twitter
- 28. Gửi tên người dùng và mật khẩu cho svcutil.exe?
- 29. UPN - Tên người dùng chính
- 30. Liệt kê tất cả người dùng trong LDAP bằng PHP
Khi bạn nói * LDAP *, bạn có nghĩa * Active Directory * trên Windows, hay bạn cần một giải pháp LDAP "chung chung" cho tất cả các máy chủ LDAP có thể .... –