Có một Lớp Trình trợ giúp Thư mục Họat động có ở đâu đó không? Chỉ cần kiểm tra trước khi tôi tái phát minh ra bánh xe.Lớp Trình trợ giúp Thư mục Họat động
tôi cần phải
Validate một người dùng trong AD.
Nhận vai trò của thành viên.
Cảm ơn
Có một Lớp Trình trợ giúp Thư mục Họat động có ở đâu đó không? Chỉ cần kiểm tra trước khi tôi tái phát minh ra bánh xe.Lớp Trình trợ giúp Thư mục Họat động
tôi cần phải
Validate một người dùng trong AD.
Nhận vai trò của thành viên.
Cảm ơn
Trong .NET 3.5, bạn muốn tìm trong System.DirectoryServices.AccountManagement. Trước đó, các phiên bản System.DirectoryServices có những gì bạn cần, nhưng nó hoạt động nhiều hơn một chút.
using (var context = new PrincipalContext(ContextType.Domain))
{
var valid = context.ValidateCredentials(username, password);
using (var user = UserPrincipal.FindByIdentity(context,
IdentityType.SamAccountName,
username))
{
var groups = user.GetAuthorizationGroups();
}
}
System.DirectoryServices.ActiveDirectory namespace
http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.aspx
Đây là thực sự để tương tác với và quản lý các khía cạnh hành chính của ActiveDirectory - schema, máy chủ, các trang web, rừng, vv Người dùng các thành phần có liên quan nằm trong một không gian tên khác. – tvanfosson
Cảm ơn sự chỉnh sửa, ghi chú hợp lệ –
Dưới đây là một số mã ví dụ mà tôi đã được sử dụng:
using System.DirectoryServices;
public static string GetProperty(SearchResult searchResult,
string PropertyName)
{
if (searchResult.Properties.Contains(PropertyName))
return searchResult.Properties[PropertyName][0].ToString();
else
return string.Empty;
}
public MyCustomADRecord Login(string UserName, string Password)
{
string adPath = "LDAP://www.YourCompany.com/DC=YourCompany,DC=Com";
DirectorySearcher mySearcher;
SearchResult resEnt;
DirectoryEntry de = new DirectoryEntry(adPath, UserName, Password,
AuthenticationTypes.Secure);
mySearcher = new DirectorySearcher(de);
string adFilter = "(sAMAccountName=" + UserName + ")";
mySearcher.Filter = adFilter;
resEnt = mySearcher.FindOne();
return new MyCustomADRecord()
{
UserName = GetProperty(resEnt, "sAMAccountName"),
GUID = resEnt.GetDirectoryEntry().NativeGuid.ToString(),
DisplayName = GetProperty(resEnt, "displayName"),
FirstName = GetProperty(resEnt, "givenName"),
MiddleName = GetProperty(resEnt, "initials"),
LastName = GetProperty(resEnt, "sn"),
Company = GetProperty(resEnt, "company"),
JobTitle = GetProperty(resEnt, "title"),
Email = GetProperty(resEnt, "mail"),
Phone = GetProperty(resEnt, "telephoneNumber"),
ExtensionAttribute1 = GetProperty(resEnt, "extensionAttribute1")
};
}
Tôi đánh giá cao việc bạn chia sẻ điều này. –
Tôi đang phát triển trên một máy tính xách tay không phải là một phần của miền. Tôi có thể chuyển yêu cầu đó cho AD không? –
Nếu người dùng của bạn là cục bộ với máy, bạn có thể sử dụng ContextType.Machine thay vì ContextType.Domain để tập trung truy vấn của bạn vào cửa hàng ủy quyền cục bộ. – tvanfosson