cho một sự hiểu biết đầu tiên, tôi đã tạo ra một dự án rất đơn giản mà cố gắng đếm số lượng tệp trong hai thư mục. User1
không được phép truy cập Directory2
và User2
không được phép truy cập Directory1
. Do mạo danh, tôi sẽ chỉ nhận được một số, tùy thuộc vào người dùng đang gọi ứng dụng của tôi. Cả hai người dùng đều được thiết lập làm quản trị viên.Thiết lập mạo danh với ASP.NET
Vì vậy, tôi đã tạo một dự án MVC mới trong Visual Studio 2015 (chạy trên Windows 8.1) và được chọn để sử dụng xác thực Windows. Sau khi ứng dụng được thiết lập và chạy (trong ISS Express), tôi chuyển sang User1
trên máy của mình (không có Active Directory) và gọi trang web trong Internet Explorer (có, "Xác thực Windows tích hợp" được bật trong cài đặt). Với thiết lập này, người dùng trong HttpContext.User.Identity
là User1
và WindowsIdentity.GetCurrent()
là người dùng phát triển của tôi, người dùng tôi đang làm việc trong Visual Studio.
Tôi cũng đã cố gắng mạo danh bằng tay:
WindowsIdentity winId = (WindowsIdentity)User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
// GetNumbers() tries to get the number of files for both directories
numbers = GetNumbers();
}
catch (Exception e)
{
}
finally
{
if (ctx != null)
{
ctx.Undo();
}
}
Thật không may, tôi nhận được ngoại lệ "Hoặc là một mức độ mạo danh yêu cầu không được cung cấp, hoặc mức độ mạo danh cung cấp không hợp lệ." Một số người đã tuyên bố chủ đề này đã giải quyết được vấn đề của họ: https://kc.mcafee.com/corporate/index?page=content&id=KB56194 Không phải cho tôi. Tôi đã thêm User1
và người dùng của riêng tôi vào danh sách và khởi động lại máy tính. Không thay đổi.
Điều duy nhất mang lại cho tôi một chút hy vọng là mạo danh với thông tin đăng nhập riêng biệt, như được mô tả trên https://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingusinglogonuser Những bất lợi là khá rõ ràng: Tôi phải có mật khẩu của người dùng và tại sao tôi nên đăng nhập lại nếu người dùng đã đã làm điều đó cho tôi.
Mặc dù đây là một dự án mới mà không thay đổi lớn của tôi, một số chi tiết thông tin chỉ để kiểm tra sự tỉnh táo ...
Web.config
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
thiết lập dự án của tôi là
- "Xác thực ẩn danh" là
false
- "Windows authenticat ion" là
true
- 'chế độ pipline được quản lý' là
Integrated
Mọi góp ý về những gì để thay đổi để làm cho công việc dự án đơn giản này như mong đợi?
Trân trọng, Carsten