2012-01-30 12 views
5

Estamos convirtiendo algunas de nuestras aplicaciones web que utilizan para ejecutar bajo la autenticación de formularios, para funcionar ahora como la autenticación de Windows. Quiero recrear la seguridad de la página que tiene la autenticación de formularios con una modificación mínima de las páginas reales. Pude recrear el efecto que deseo con una aplicación web simplificada. Estoy ejecutando la aplicación en el canal integrado de Server 2008 R2 IIS 7.5.Redirección de autenticación de Windows a una costumbre página 401

he creado una sencilla aplicación 3 página utilizando la autenticación de Windows. Las tres páginas son:

  • Openpage.aspx, que está abierto a cualquier usuario autenticado
  • Blockedpage.aspx que está bloqueado a todos los usuarios (simbólicas de un directorio o página que estarían bloqueados para un subconjunto de usuarios basado en el rol de usuario)
  • ErrorPage.aspx, si se accede a blockedpage.aspx (y rechazada) la aplicación debe remitir a ErrorPage.aspx donde el usuario obtiene información genérica sobre la aplicación.

El Web.config de la aplicación:

<configuration> 
    <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
     <authentication mode="Windows"/> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    <location path="blockedpage.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <system.webServer> 
    <httpErrors errorMode="Custom" > 
     <remove statusCode="401" subStatusCode="-1" /> 
     <error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 

    <validation validateIntegratedModeConfiguration="false" /> 
    <defaultDocument> 
     <files> 
     <clear /> 
     <add value="openpage.aspx" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 

</configuration> 

(Si no intento de redirigir los 401 errores en el nivel de asp.net, apenas consigo la norma “no autorizada mensaje” que no es el efecto que quiero dar a mis usuarios)

sin embargo, estoy consiguiendo un error que no entiendo -. cada vez que se reinicie el servidor, la aplicación deja de funcionar. IIS simplemente devuelve 401 errores hasta que el navegador muestra un control de inicio de sesión manual, que no se puede cumplir. (No quiero que a mis usuarios se les muestre el indicador de inicio de sesión del navegador)

Sin embargo, si reemplazo la sección httperrors una vez que la aplicación está configurada (editando la configuración web o actualizándola con la GUI del servidor)) eliminando la sección, accediendo a la página, y luego volviendo a agregar la sección, la aplicación comienza a funcionar como se espera y continúa hasta que se reinicia el servidor, momento en el que comienza a dar a los usuarios la ventana emergente de inicio de sesión manual nuevamente, que no puede resolver

1) ¿Es esta la forma correcta para asegurar una aplicación con la autenticación de Windows (¿existe una mejor manera de configurar un directorio inaccesible al igual que en las formas, y aún así proporcionar una página de error personalizada?)

2) ¿Es esta un efecto de la tubería integrada y por qué está funcionando de esta manera?

Respuesta

1

Está intentando proporcionar el contenido sobre un mensaje de error de transporte.

Formas le permite hacer esto porque está compuesto de material de capa 7, como 302s y 200s. El navegador del cliente interpreta las 401 como "al servidor no le gustaron mis credenciales, por lo tanto, levante un cuadro de diálogo para solicitar nuevas".

Una página autenticada produce al menos 1 401 con el fin de llegar a ser autenticada; que estás sobrecargando el "error" por otra cosa es probablemente la raíz del problema.

no estoy seguro de que hay una manera elegante de hacer lo que quiere.

Cuestiones relacionadas