Câu trả lời trước của tôi cho biết biểu mẫu auth và http xác thực cơ bản có thể nằm cạnh nhau trong chế độ tích hợp II7. Tôi đã hoàn toàn sai và kể từ đó đã thực hiện một giải pháp đơn giản.
Sử dụng một tùy chỉnh HttpModule bạn có thể thêm auth cơ bản cùng bên thường xuyên các hình thức auth
public class CustomBasicAuthHttpModule : IHttpModule
{
private HttpApplication httpApplicationContext;
public void Dispose()
{
}
public void Init(HttpApplication context)
{
this.httpApplicationContext = context;
context.BeginRequest += this.OnBeginRequest;
context.EndRequest += this.OnEndRequest;
}
private void OnBeginRequest(object sender, EventArgs e)
{
// your logic of checking Auth header goes here
if (this.httpApplicationContext.Request.Headers["Authorization"] != "Basic base64-encoded-user:pass")
{
this.httpApplicationContext.Response.StatusCode = 401;
this.httpApplicationContext.Response.End();
}
}
private void OnEndRequest(object sender, EventArgs e)
{
if (this.httpApplicationContext.Response.StatusCode == 401)
{
this.httpApplicationContext.Response.AddHeader("WWW-Authenticate", "Basic");
}
}
sau đó trong web.config của bạn
<system.webServer>
<modules>
<add name="CustomBasicAuthHttpModule" type="Namespace.CustomBasicAuthHttpModule, AssemblyName"/>
</modules>
</system.webServer>
Đây là một thất bại tuyệt đối/thiếu hụt trên phần IIS7. Trường hợp nghiêm trọng về kỹ thuật quá mức và tầm nhìn ngắn của Microsoft ở đây. Điều này sẽ là một cú nhấp chuột "Thêm rẻ mật khẩu popup mật khẩu" nút riêng biệt cho tất cả các thế giới học thuật đẹp hơn các mô-đun xác thực phức tạp và crap mà họ đã đưa ra. – Aaron
Thật đáng ngạc nhiên khi số lượng duds dường như hoàn toàn sẵn sàng chấp nhận điều này và đưa lên bằng cách viết các mô-đun trình bao bọc tùy chỉnh của riêng họ và tương tự. Chỉ cần tổng số người quá kỹ thuật, có được với chương trình. Điều này sẽ rất đơn giản. Tôi sẽ không viết bất kỳ mã tùy chỉnh nào để triển khai mật khẩu bật lên được sử dụng để mất 2 giây để định cấu hình. Phải có một cách đơn giản. – Aaron
Rất vui khi thấy nó không chỉ là tôi gặp vấn đề này –