2010-01-15 29 views
9

Tôi có một trang web mà tôi muốn cho phép cả Biểu mẫu và Xác thực Windows. Vấn đề của tôi là có vẻ như khi bạn thiết lập IIS để cho phép cả ẩn danh (Bắt buộc đối với biểu mẫu auth) và xác thực Windows mà trình duyệt sẽ không gửi thông tin đăng nhập mạng của người dùng.Xác thực Windows IIS trước Anonymous

Nó chỉ sử dụng thông tin đăng nhập ẩn danh. Có cách nào trong IE8 hoặc IIS để có nó thử Windows Auth 1 và sau đó rơi trở lại Anonymous?

Cảm ơn bạn đã được trợ giúp.

+0

có thể trùng lặp của [Làm thế nào để hỗ trợ xác thực NTLM với mùa thu trở lại để hình thành trong ASP.NET MVC?] (Http://stackoverflow.com/questions/4027911/how-to-support-ntlm-authentication-with- rơi ngược lại để hình thành-trong-asp-net-mvc) – Neil

Trả lời

11

Bạn không thể yêu cầu xác thực HTTP (cho dù đó là Xác thực cơ bản hoặc Xác thực Windows tích hợp) mà không làm hộp thoại xác thực bật trong trường hợp chưa có thông tin xác thực.

Vì vậy, nói chung cho phương pháp tiếp cận cookie-auth hybrid lai, bạn cho phép cả truy cập ẩn danh và được xác thực cho phần lớn trang web, nhưng chỉ cho phép truy cập được xác thực vào một tập lệnh cụ thể.

Khi người dùng truy cập trang không có loại xác thực, bạn nhả ra một trang có biểu mẫu đăng nhập cho xác thực dựa trên cookie và cũng là liên kết đến một URL chỉ cho phép truy cập được xác thực. Người dùng có thể điền vào biểu mẫu cho cookie & biểu mẫu xác thực hoặc nhấp vào liên kết để đăng nhập bằng xác thực HTTP thay thế.

Nếu người dùng theo liên kết đó, họ sẽ nhận được phản hồi 401 và phải cung cấp xác thực HTTP, qua hộp thoại xác thực hoặc có khả năng tự động sử dụng xác thực Windows tích hợp. Khi điều này xảy ra một lần, trình duyệt sẽ bắt đầu gửi cùng một thông tin đăng nhập tới mọi trang trong tương lai, vì vậy IIS sẽ giải mã thông tin đăng nhập để cung cấp cho bạn số REMOTE_USER được mong đợi khi các tập lệnh trang web chính của bạn được chạy.

Trình duyệt sẽ chỉ gửi thông tin xác thực đến các trang trong cùng thư mục với tập lệnh 401 hoặc các thư mục con này. Vì lý do này, tốt nhất là đặt tập lệnh yêu cầu HTTP-auth vào thư mục gốc, ví dụ như /login.aspx.

Tuy nhiên, có một vài trình duyệt sẽ không tự động gửi bằng chứng cho các trang tiếp theo và yêu cầu mọi yêu cầu HTTP trả lời trước 401 trước khi gửi lại yêu cầu bằng thông tin đăng nhập. Điều này làm cho các lược đồ tùy chọn-auth và lai-auth không thể (cũng như việc duyệt các trang web được bảo vệ chậm hơn nhiều!). Trình duyệt hiện đại duy nhất thực hiện điều này là Safari. Bạn có thể không quan tâm, vì sự hỗ trợ của Safari đối với Xác thực Windows Tích hợp thường bị run rẩy theo kiểu truyền thống và nó vẫn có thể sử dụng kiểu auth forms + cookies.

+0

Hm, xin lỗi vì downvote, không biết tại sao, nhưng không thể hoàn tác rõ ràng .. – Onkelborg

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