2012-05-24 34 views
6

Có một ứng dụng tạo người dùng mới mà chúng tôi vừa cung cấp cho người dùng của mình. Tuy nhiên, những người dùng này cần có khả năng tạo người dùng thông qua ứng dụng mặc dù bản thân họ không được phép tạo người dùng.C# truy cập thư mục hoạt động với các thông tin người dùng khác nhau

Trong C# cách bạn mạo danh người dùng khác để có chức năng này. Ứng dụng này chính sử dụng System.DirectoryServices.

Đoạn mã:

DirectoryEntry dEntry = new DirectoryEntry("LDAP://OU="); 
DirectorySearcher dSearcher = new DirectorySearcher(dEntry); 
//filter just user objects 
dSearcher.SearchScope = SearchScope.Subtree; 
dSearcher.Filter = "(&(objectClass=user)(mail=" + excel_Holding_Table.Rows[i]["EmailAddress"].ToString() + "))"; 
dSearcher.PageSize = 1000; 
sResults = dSearcher.FindAll(); 
+0

Chạy quy trình/dịch vụ với tư cách là quản trị viên? Tôi biết làm thế nào để làm điều đó bằng tay, nhưng tôi không biết làm thế nào nó sẽ làm việc trong. NET trên cơ sở tự động. – JAB

Trả lời

9

Bạn có thể sử dụng lớp DirectoryEntry trực tiếp và chỉ định tên người dùng và mật khẩu:

DirectoryEntry de = new DirectoryEntry(path); 

de.Username = "username"; 
de.Password = "password"; 

Và truy cập Active Directory từ đối tượng de. Hoặc bạn có thể sử dụng lớp WindowsIdentity và và mạo danh một người dùng:

WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle()); 
WindowsImpersonationContext impersonatedUser = newId.Impersonate(); 

Một mẫu mã đầy đủ có sẵn tại địa chỉ:

Impersonation and DirectoryEntry

0

Sử dụng Trình tạo thư mụcEntry (Chuỗi, Chuỗi, Chuỗi, AuthenticationTypes) có tên người dùng và mật khẩu thay vì mạo danh.

DirectoryEntry directoryEntry = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/Root", @"domain\username", "password", AuthenticationTypes.Secure | AuthenticationTypes.Sealing); 

Reference

0

Bạn có thể sử dụng thông tin đặc quyền để kết nối với AD hoặc để mạo danh một người sử dụng đặc quyền như câu trả lời khác đã gợi ý.

Nhưng điều này có ý nghĩa bảo mật, vì điều đó có nghĩa là người dùng của bạn sẽ có thể sử dụng các thông tin đăng nhập đặc quyền này cho các mục đích khác, không được ủy quyền.

Giải pháp an toàn hơn là tạo dịch vụ web chạy trong tài khoản dịch vụ có quyền AD thích hợp. Người dùng có thể xác thực với dịch vụ web bằng cách sử dụng xác thực Windows và dịch vụ web sẽ tạo người dùng thay cho họ. Nó có thể sử dụng ủy quyền để hạn chế những gì người dùng được phép làm (ví dụ: chỉ tạo người dùng trong bộ phận riêng của họ).

Các vấn đề liên quan