Tôi đang sử dụng Active Directory trong lớp MembershipProvider tùy chỉnh để xác thực người dùng trong ứng dụng mạng nội bộ ASP.NET 2.0 và liên kết sid của họ với một cấu hình cho ứng dụng.ASP.NET - Nhận mã định danh chính/tương đối (RID) cho một DirectoryEntry/SID
Khi ActiveDirectoryMembershipProvider
được sử dụng, đối tượng ProviderUserKey
cho MembershipUser
như sau
SecurityIdentifier sid = (SecurityIdentifier)Membership.GetUser().ProviderUserKey;
string sidValue = sid.ToString();
/* sidValue = "S-1-5-21-XXXX-XXXX-XXXX-YY" */
Theo tôi được biết, YY
là hiệu trưởng trong không gian tên (cũng được gọi là một nhóm/tên miền).
Khi sử dụng MembershipProvider tùy chỉnh, tôi có thể nhận được bằng cách sử dụng sid objectSid
tài sản của một đối tượng DirectoryEntry
DirectoryEntry entry = new DirectoryEntry(path, username, password);
SecurityIdentifier sid = new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0);
string sidValue = sid.ToString();
/* sidValue = "S-1-5-21-XXXX-XXXX-XXXX" */
Các sidValue
trong trường hợp này là giống hệt nhau, ngoại trừ nó không chứa hiệu trưởng YY
.
Câu hỏi của tôi là hai lần
- Sản phẩm chủ yếu cần thiết để nhận diện một cá nhân?
- Có thể lấy hiệu trưởng từ đối tượng DirectoryEntry (hoặc thông qua bất kỳ lớp nào khác có sẵn trong
System.DirectoryServices
)?
EDIT:
Sau khi thực hiện một số đọc thêm ({1}{2}), bây giờ tôi biết rằng sid có thể thay đổi nếu người dùng đang di chuyển từ một nhóm/miền khác. Trong điều kiện này, việc sử dụng số GUID
được xác định trong DirectoryEntry
Properties["objectGUID"]
có phải là lựa chọn tốt hơn để nhận dạng duy nhất người dùng không?
Đối tượngGUID có phải là GUID cho tài khoản hoặc GUID cho loại đối tượng mà mục nhập thư mục đại diện không? Ngoài ra, bạn có một liên kết đến bất kỳ tài liệu nào cung cấp chi tiết về từng thuộc tính mục nhập thư mục không? –
Đó là GUID cho tài khoản cá nhân. Bạn có thể thấy nó trong Active Directory nếu bạn sử dụng ADSI Edit MMC Snap-in (http://technet.microsoft.com/en-us/library/cc773354 (WS.10).aspx). – serialhobbyist
Tôi đã thêm liên kết vào bài đăng chính vì bài đăng trước dường như bị xáo trộn một chút. Tôi đã không chắc chắn cho dù bạn muốn các thuộc tính của đối tượng DirectoryEntry hoặc đối tượng AD. Trong trường hợp sau, người AD có xu hướng nói về chúng như là các thuộc tính. Vì vậy, một thể hiện của một lớp AD, chẳng hạn như người dùng, có các thuộc tính như displayName. Một thể hiện của DirectoryEntry có thuộc tính Properties chứa một tập hợp các thuộc tính và các giá trị của chúng. Nó sẽ được gọi là Thuộc tính, IMO. – serialhobbyist