5

Ho un'applicazione ASP.NET MVC, con alcuni servizi RESTful che sto cercando di proteggere utilizzando l'autenticazione di base personalizzata (sono autenticati sul mio database). L'ho implementato scrivendo un HTTPModule.L'autenticazione di base personalizzata non riesce in IIS7

ho un metodo allegato all'evento HttpApplication.AuthenticateRequest, che chiama questo metodo nel caso di fallimento di autenticazione:

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

Questo metodo è associato all'evento 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); 
     } 
    } 

Questo codice aggiunge l'intestazione "WWW-Authenticate" che indica al browser di aprire la finestra di dialogo di accesso. Funziona perfettamente quando eseguo il debug localmente utilizzando il server Web di Visual Studio. Ma fallisce quando lo eseguo in IIS7.

Per IIS7 I moduli di autenticazione incorporati sono tutti disattivati, ad eccezione di quelli anonimi. Restituisce ancora una risposta HTTP 401, ma sembra che rimuova l'intestazione WWW-Authenticate.

Qualche idea?

risposta

2

L'ho capito. Il problema era che ho chiamato questo modulo, "BasicAuthenticationModule", che era in conflitto con un altro modulo che IIS aveva integrato. Una volta rinominato il modulo, le cose funzionavano bene!

Problemi correlati