Đây là những gì tôi đã cố gắng làmTôi có thể mạo danh một khách hàng được xác thực bằng biểu mẫu auth và thiết lập kết nối đáng tin cậy với SQL Server không?
Xây dựng ứng dụng ASP.NET MVC 3 với xác thực biểu mẫu và thành viên thư mục hoạt động. Máy chủ web và cơ sở dữ liệu là các máy chủ vật lý khác nhau do đó một bước nhảy kép.
Tôi nghĩ câu trả lời là bài viết cũ hơn này trên constrained delegation and protocol transition? Cho đến nay, tôi đã không thể có được kỹ thuật để làm việc.
Tôi đang thử nghiệm điều này từ máy DEV (Windows 7, IIS7) cho máy chủ web trước khi triển khai lên Windows 2008 (IIS7) trong quá trình thiết lập sản xuất. Windows 2008 có tạo sự khác biệt không?
Điều gì làm việc và những gì không
Tôi có thể đăng nhập bằng hình thức auth và các thành viên AD. Điều này dường như làm việc tốt. Khi tôi cố thực hiện cuộc gọi cơ sở dữ liệu bằng mã này:
public void AsUser(Action action)
{
using (var id = new WindowsIdentity(User.Identity.Name + @"@example.com"))
{
WindowsImpersonationContext context = null;
try
{
context = id.Impersonate();
action.Invoke();
}
catch (Exception ex)
{
// ex.Message is The type initializer for System.Data.SqlClient.SqlConnection threw an exception
// buried inner exeption is Requested registry access is not allowed
}
finally
{
if (context != null)
{
context.Undo();
}
}
}
}
Không có ngoại lệ khiến tôi có vấn đề về thiết lập trên máy chủ DEV cục bộ của mình. Ngoại lệ bên trong là Requested registry access is not allowed
.
Nếu tôi đặt điểm ngắt và kiểm tra WindowsIdentity
sau cuộc gọi Impersonate()
Tôi thấy rằng ImpersonationLevel
được đặt thành Identification
. Điều này có vẻ như một đầu mối rằng nó không được thiết lập đúng. Có ai xác nhận không?
Tôi đang đi đúng hướng và điều này thậm chí có thể thiết lập không? Mọi con trỏ sẽ được đánh giá cao.
Cảm ơn tất cả thông tin. Rất nhiều điều mới mẻ đối với tôi. Tôi chưa có thời gian để thiết lập lại mọi thứ và bắt đầu với kiến thức mới này nhưng tôi tự tin hơn rằng tôi có thể làm cho nó hoạt động ngay bây giờ. –
Điều này kinda sucks ... với 13 phút cho đến khi tiền thưởng đã lên tôi chọn của bạn như là câu trả lời không nhận ra rằng đó là khác nhau hơn "trao" tiền thưởng. Bạn có một nửa những gì bạn nên có. Tôi xin lỗi tôi đã không hiểu hệ thống hoặc có thể tôi đã bỏ lỡ các manh mối trong giao diện người dùng - dù bằng cách nào xấu. –
@Aaron Đừng lo lắng. Cảm ơn bạn đã chấp nhận câu trả lời của tôi. Sau khi bạn nhận được transistion giao thức làm việc, thực sự có một số vấn đề kerberos tổng quát hơn mà bạn có thể chạy vào. Ví dụ. nếu có SPN trùng lặp trong cùng một rừng AD, xác thực Kerberos sẽ ngừng hoạt động âm thầm. Rất khó để viết một câu trả lời hoàn chỉnh cho loại câu hỏi này. Nếu chúng ta có thể, MSDN sẽ không cần phải có nhiều bài viết và KB cho vấn đề tương tự. Nếu bạn đang gặp phải một số vấn đề AD khác, hãy gắn thẻ câu hỏi với 'active-directory'. Bạn có thể nhận được nhiều gợi ý hữu ích hơn –