5

Mam aplikacji ASP.NET MVC, ze niektóre usługi REST, że staram się zabezpieczyć przy użyciu uwierzytelniania zwyczaj podstawowej (są uwierzytelniane przeciwko własnej bazy danych). Zaimplementowałem to, pisząc moduł HTTP.uwierzytelniania klienta podstawowy zawiedzie w IIS7

Mam jedną metodę dołączone do zdarzenia HttpApplication.AuthenticateRequest, który wywołuje tę metodę w przypadku niepowodzenia uwierzytelniania:

private static void RejectWith401(HttpApplication app) 
    { 
     app.Response.StatusCode = 401; 
     app.Response.StatusDescription = "Access Denied"; 
     app.CompleteRequest(); 
    } 

Metoda ta jest przymocowana do zdarzenia HttpApplication.EndRequest:

public void OnEndRequest(object source, EventArgs eventArgs) 
    { 
     var app = (HttpApplication) source; 
     if (app.Response.StatusCode == 401) 
     { 
      string val = String.Format("Basic Realm=\"{0}\"", "MyCustomBasicAuthentication"); 
      app.Response.AppendHeader("WWW-Authenticate", val); 
     } 
    } 

Ten kod dodaje „WWW uwierzytelnienie” nagłówek, który informuje przeglądarkę, aby rzucić się okno logowania. Działa to doskonale, gdy debuguję lokalnie za pomocą serwera WWW Visual Studio. Ale zawiedzie, gdy uruchomię go w IIS7.

Dla IIS7 Mam wbudowany w moduły uwierzytelniania wszystkie wyłączone, z wyjątkiem anonimowy. Nadal zwraca odpowiedź HTTP 401, ale wydaje się, że usuwa on nagłówek WWW-Authenticate.

Wszelkie pomysły?

Odpowiedz

2

I zdobione. Problemem było to, że ten moduł o nazwie „BasicAuthenticationModule”, które kolidowały z innym modułem IIS zbudował w. Po I przemianowany rzeczy moduł pracował dobrze!

Powiązane problemy