/ / Configuración de autorización para una carpeta en ASP.NET - asp.net, web-config, autorización

Configuraciones de autorización para una carpeta en ASP.NET - asp.net, web-config, autorización

Tengo un sitio web asp.net, quiero restringir a todos los usuarios para acceder a una carpeta llamada "log" y tengo este elemento en web.config:

<location path="log">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>

y este elemento antes que en system.web:

<authorization>
<allow users="*"/>
</authorization>

Pero todavía tengo acceso a esta url: http://www.mydomain.com/log/log.txt

¿Algunas ideas?

Gracias.

Respuestas

2 para la respuesta № 1

.txt ASP.NET no maneja los archivos de forma predeterminada. Tendrá que bloquear el acceso a la carpeta desde IIS.

Si está utilizando IIS 7 puede usar Solicitud de filtrado lograr esto.


0 para la respuesta № 2

para evitar estas confusiones, normalmente creo un archivo web.config en los directorios que necesito para establecer diferentes permisos.

Si coloca un archivo web.config dentro de su carpeta de registro, funcionará bien (y será más fácil verificar los permisos aplicados en la carpeta)

Ejemplo:

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</configuration>

0 para la respuesta № 3

Escribí un resumen ya que muchos enfrentaban la misma situación con respecto a la autenticación de subcarpetas.

Autorización de subcarpetas

  • ASP.NET solo puede tener una modo de autenticación para uno solicitud.
  • Lo diferente aplicaciones no pueden compartir recursos entre ellos.

Guión

Digamos que la página de inicio no debe iniciar sesióndiálogo. Debe permitir a los usuarios pasar sin tener que iniciar sesión. Sin embargo, en la misma aplicación, en una carpeta diferente, presumiblemente, otra página debe verificar el permiso del usuario con la tabla de la base de datos utilizando el ID de inicio de sesión de la red del usuario. Por defecto, IE trata a todos los sitios web con solo el nombre de host de una Intranet. Por su configuración de intranet predeterminada, no activará el cuadro de diálogo de inicio de sesión ni pasará el inicio de sesión y la contraseña del usuario a la aplicación si se utiliza la autenticación de Windows. Sin embargo, la parte complicada es que, si la aplicación tiene un dominio real, IE pensará que es un sitio de Internet y solicitará el inicio de sesión y la contraseña si se utiliza la autenticación de Windows.


La única forma de no promover el diálogo de inicio de sesión para el sitio de Internet mediante la autenticación de Windows, es también activar la autenticación anónima en IIS. Sin embargo, perderá la capacidad de capturar elinformación de inicio de sesión porque el Anónimo tiene prioridad sobre la autenticación de Windows. La buena noticia es que hay una manera de resolver ese problema. Si una subcarpeta de aplicación necesita capturar la información de inicio de sesión, deberá sobrescribir la autorización principal en el elemento Ubicación en web.config.

1 En IIS, configure la autenticación de la siguiente manera:

  1. Habilitar la autenticación anónima,
  2. Habilitar la autenticación de Windows

2 Agregue lo siguiente en Web.Config.

<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>

<!-- secured is the relative subfolder name. deny anonymous user, so only the authenticated login will pass through -->
<location path="secured" allowOverride="true">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>