net loginurl form cookie aspx asp asp.net authentication web-config

asp.net - loginurl - ¿Permitir autenticación anónima para una sola carpeta en web.config?



web form authentication c# (5)

Así que aquí está el escenario, tengo una aplicación Asp.Net que está utilizando un proveedor de autenticación y membresía personalizado, pero tenemos que permitir el acceso completamente anónimo (es decir) a una carpeta particular dentro de la aplicación.

En el administrador de IIS, puede establecer el modo de autenticación de una carpeta, pero la configuración se guarda en el archivo C:/Windows/System32/inetsrv/config/applicationHost.config como se describe aquí.

Para facilitar la instalación, sería genial si pudiera configurar esto en mi web.config, pero después de un par de intentos, creo que esto podría no ser posible.

¿Alguien sabe de otra manera?

Muchas gracias


Agregué web.config a la carpeta específica, diga "Usuarios" (VS 2015, C #) y el siguiente código agregado

<?xml version="1.0"?> <configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </configuration>

Inicialmente utilicé la etiqueta de ubicación pero eso no funcionó.


El primer enfoque es modificar su web.config usando la etiqueta de configuración <location> y <allow users="?"/> Para permitir anonymous o <allow users="*"/> para todos:

<configuration> <location path="Path/To/Public/Folder"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> </configuration>

Si ese enfoque no funciona, entonces puede tomar el siguiente enfoque que requiere hacer una pequeña modificación a la aplicación IISHost.config.

Primero, cambie el overrideModeDefault de la sección anonymousAuthentication de "Denegar" a "Permitir" en C: / Windows / System32 / inetsrv / config / applicationHost.config:

<section name="anonymousAuthentication" overrideModeDefault="Allow" />

overrideMode es una característica de seguridad de IIS. Si no se permite la anulación a nivel del sistema en applicationHost.config, entonces no hay nada que pueda hacer en web.config para habilitarlo. Si no tiene este nivel de acceso en su sistema de destino, debe entablar conversación con su proveedor de hosting o administrador del sistema.

En segundo lugar, después de establecer overrideModeDefault="Allow" , puede poner lo siguiente en su web.config:

<location path="Path/To/Public/Folder"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" /> </authentication> </security> </system.webServer> </location>


Para que funcione, construyo mi directorio de esta manera:

Proyecto Public Restrict

Así que edité mi webconfig para mi carpeta pública:

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

Y para mi carpeta Restringida:

<location path="Project/Restricted"> <system.web> <authorization> <allow users="?"/> </authorizatio> </system.web> </location>

Espero haber ayudado.


Utilice la etiqueta de configuración <location> y <allow users="?"/> Para permitir solo anonymous o <allow users="*"/> para todos:

<configuration> <location path="Path/To/Public/Folder"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> </configuration>


<location path="ForAll/Demo.aspx"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>

Además: si desea escribir algo en esa carpeta a través del sitio web, debe otorgarle permiso a IIS_User a la carpeta