Tengo una aplicación MVC de ASP.NET, con algunos servicios RESTful que estoy tratando de proteger usando autenticación básica personalizada (están autenticados contra mi propia base de datos). Lo he implementado escribiendo un HTTPModule.La autenticación básica personalizada falla en IIS7
he unido a un método caso HttpApplication.AuthenticateRequest, que llama a este método en el caso de fallo de autenticación:
private static void RejectWith401(HttpApplication app)
{
app.Response.StatusCode = 401;
app.Response.StatusDescription = "Access Denied";
app.CompleteRequest();
}
Este método se une al 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);
}
}
Este código agrega el encabezado "WWW-Authenticate" que indica al navegador que arroje el diálogo de inicio de sesión. Esto funciona perfectamente cuando depuro localmente usando el servidor web de Visual Studio. Pero falla cuando lo ejecuto en IIS7.
Para IIS7 tengo todos los módulos de autenticación incorporados apagados, excepto el anónimo. Todavía devuelve una respuesta HTTP 401, pero parece eliminar el encabezado WWW-Authenticate.
¿Alguna idea?