2010-11-09 9 views
24

Estoy seguro de que esto tiene algo que ver con IIS, pero no puedo resolverlo.¿Por qué mi hoja de estilo me redirige para iniciar sesión?

Tengo un sitio web que usa autenticación de formularios. Cuando mi sitio web intenta acceder a cualquier recurso de archivos (archivos javascript, css, etc.), me redireccionan a la página de inicio de sesión de formularios configurada en mi web.config. También me redireccionan si solo escribo la dirección en la barra de direcciones.

La entrada web.config para formularios de autenticación es bastante básico:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

También hay dos nodos de localización para denegar a los usuarios de otras partes del sitio:

<location path="n2"> 
    <system.web> 
    <authorization> 
     <allow roles="Editors" /> 
    </authorization> 
    </system.web> 
</location> 
<location path="web.config"> 
    <system.web> 
    <authorization> 
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</location> 

estoy usando el instalación estándar de IIS7 en Windows Server 2008 R2.

Editar Por lo tanto, si añado una cookie de autenticación aleatorio (FormsAuthentication.SetAuthCookie()), los recursos de que se disponga, sé que tiene que ser mi modelo de autenticación que está en mal estado de alguna manera. Funciona en otro servidor (simplemente lo copié). ¿Alguna idea de cómo puedo rastrear el problema?

+0

¿Alguna vez resolvió esto? Teniendo exactamente el mismo problema – starskythehutch

Respuesta

51

que tenían el mismo error, en mi caso el truco estaba poniendo la autenticación anónima para usar la identidad grupo de aplicaciones en lugar de IUSR en IIS

  1. Abrir IIS
  2. Expanda Sitios
  3. Seleccione [yourwebsite]
  4. autenticación de doble clic (estará bajo la "Zona" IIS o la "categoría" Seguridad) autenticación
  5. Seleccionar Anónimo
  6. Haga clic en Editar en el panel Acciones
  7. Haga clic en el botón de opción 'Aplicación de identidad del grupo'
+4

Y para aquellos que buscan dónde hacer esto: Administrador de Internet Information Services (IIS) -> Sitios -> Sitio web predeterminado -> [YourWebSite] -> Autenticación -> Autenticación anónima -> Editar -> Identidad de usuario anónimo: identidad del grupo de aplicaciones – Nailuj

+1

En el servidor 2012 iis 8.5> Sitios> [Inicio de su sitio]> (en el grupo IIS) Autenticación> Autenticación anónima - Editar> identidad del grupo de aplicaciones (https://www.dropbox.com/s/8ytk3zwkyqsmm0c/iis8_anon_creds.png?dl= 0) – jaybro

0

Ha pasado mucho tiempo desde que hice algún trabajo con asp.net pero las primeras preguntas serían: ¿está seguro de que su usuario es miembro de la función "Editores"? Puede utilizar la herramienta de administración del sitio web para configurar esto, creo. http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx

+0

Ni siquiera estoy tratando de buscar en la ruta que requiere la función de editores, pero estoy seguro de que estoy en ello. – scottm

0

Eso es porque se ha establecido denegar a todos. En IIS 7, debido a la interconexión integrada, se le redirigirá incluso cuando intente explorar CSS o cualquier página estática.

Ponga el contenido estático dentro de una carpeta si lo desea y permita el acceso a ella.

+0

¿No digo que a todos se les niega el acceso al archivo web.config? Incluso si elimino esos dos últimos nodos de ubicación, sucede lo mismo. – scottm

+0

Ohh ... disculpas por perder esa parte de web.config. ¿Puedes intentar agregar Permitir usuarios anónimos?

+0

También puede probar con una nueva aplicación simple y ver si puede navegar archivos estáticos o no. Si, por casualidad, incluso eso no funciona ... Yo recomendaría verificar si su máquina contiene un carácter de subrayado en su nombre. –

1

Yo uso allow * para mi carpeta Content. Eso evitará que se produzca ninguna autorización para el contenido estático.

<location path="Content"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

Rick

+0

He intentado esto también, pero obtengo el mismo resultado. Estoy perplejo. – scottm

+0

Comprime tu proyecto y envíalo si quieres. rrb en matrix6 dot com. O, mejor aún, haga un proyecto de prueba más pequeño con solo lo esencial para que el problema se produzca. – rboarman

0

No utilice <location> etiquetas en web.config para manejar la autorización en una aplicación ASP.NET MVC como lugares ya no tienen ningún sentido. Todo lo que necesita en web.config es la etiqueta authentication. En MVC la autorización se puede lograr decorando los controladores y/o acciones adecuados con el atributo [Authorize].

+0

Tengo una aplicación webforms en un directorio dentro de mi proyecto mvc. Aparentemente, las ubicaciones tienen sentido, porque sin la entrada para N2, los usuarios no son redirigidos para iniciar sesión. – scottm

+1

No estoy de acuerdo, las etiquetas de ubicación tienen un uso en las aplicaciones de MVC. Tuve que usarlos para permitir el acceso anónimo a dos carpetas de recursos estáticos. – Kev

+0

No estoy de acuerdo también. Los uso para mi carpeta de contenido y para mis páginas de inicio de sesión/registro. – rboarman

0

¡Tenía exactamente lo mismo y descubrí que era porque había olvidado permitir el acceso anónimo al sitio web desde IIS! Esto significaba que FormsAuthentication siempre estaba funcionando, incluso para los recursos estáticos que no estaban protegidos.

0

En IIS, mi autenticación anónima estaba en forma correcta y el usuario se establece en IUSR. Por lo tanto, necesitaba ingresar al Explorador de Windows, navegar al directorio de mi aplicación web, hacer clic con el botón derecho en Propiedades, pestaña Seguridad, botón Editar, y dar IUSR Leer, Lista y Leer & Permisos de ejecución (el conjunto predeterminado). Asegúrese de que los cambios sean heredados por todos los niños, aplique, posiblemente espere, y estará listo.

Cuestiones relacionadas