Mi respuesta anterior dijo que las formas auth y http auth podrían vivir una al lado de la otra en el modo integrado II7. Estaba completamente equivocado y desde entonces he hecho una solución simple.
Usando una costumbre HttpModule puede agregar autenticación básica junto a las formas de autenticación regular de
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");
}
}
entonces en su web.config
<system.webServer>
<modules>
<add name="CustomBasicAuthHttpModule" type="Namespace.CustomBasicAuthHttpModule, AssemblyName"/>
</modules>
</system.webServer>
Esto es una falla/un déficit absoluto en la parte de IIS7. Caso masivo de exceso de ingeniería y miopía de Microsoft aquí. Debería ser un botón de un solo clic "Añadir una contraseña emergente sucia barata", separado de todo el mundo académicamente hermoso y sobredimensionado de los complejos módulos de autenticación y basura que se les ocurrió. – Aaron
Sorprende la cantidad de borrachos que parecen perfectamente dispuestos a aceptar esto y aguantarlo escribiendo sus propios módulos de envoltura personalizados y similares. Solo la gente total de ingeniería, consigue con el programa. Esto debería ser tan simple. No voy a escribir ningún código personalizado para implementar una contraseña emergente que solía tardar 2 segundos en configurarse. Tiene que haber una manera simple. – Aaron
Me alegra ver que no es solo yo quien tiene este problema –