Web.config permite el acceso a la ubicación para usuarios específicos

Tengo un servidor web desde el que los usuarios pueden descargar archivos específicos para cada usuario. Para asegurarse de que cada usuario solo pueda descargar sus propios archivos, debe autenticarse a través de Autenticación básica. Entonces, para cada usuario hay una cuenta de Windows en el servidor que tiene permisos de lectura para la carpeta específica del usuario.

Ahora quiero mover esta funcionalidad a otro servidor. No quiero crear cuentas de Windows para los usuarios, pero aún mantengo la autenticación básica. Entonces uso la Módulo HTTP de autenticación básica personalizada en combinación con unProveedor de membresía personalizada que me permite definir usuarios en web.config.

La autenticación funciona bastante bien, pero después de iniciar sesión conjack ojill (ver web.config) Puedo acceder a ambas ubicacionesDir1 yDir2. Este también es el caso si comento el<allow users="jack" /> parte en las etiquetas de ubicación.

Información adicional: creé un archivo Default.aspx y agregué una

<% Response.Write(HTTPContext.Current.User.Identity.Name) %>

que devuelve el nombre de usuario correcto según quién haya iniciado sesión.

<% Response.Write(HTTPContext.Current.User.Identity.IsAuthenticated) %>

devuelve True.

¿Qué tengo que hacer eso solojack puede acceder (= descargar archivos de)Dir1 y solojill puede acceder (= descargar archivos de)Dir2 pero no al revés?

EDIT: intenté agregar archivos web.config para cada subdirectorio en lugar de las etiquetas de ubicación mencionadas por utkai, con el mismo resultado. Todos los usuarios pueden acceder a cualquier directorio.

Aquí está mi archivo Web.config:

<configuration>
<system.webServer>
    <modules>
        <add name="CustomBasicAuthentication" type="LeastPrivilege.CustomBasicAuthentication.CustomBasicAuthenticationModule, LeastPrivilege.CustomBasicAuthenticationModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F20DC168DFD54966"/>
    </modules>

    <security>
        <authentication>
            <customBasicAuthentication enabled="true" realm="TEST" providerName="AspNetWebConfigMembershipProvider" cachingEnabled="true" cachingDuration="15" requireSSL="false"/>
        </authentication>
        <authorization>
            <deny users="?" />
        </authorization>
    </security>
</system.webServer>

<system.web>
    <membership defaultProvider="AspNetWebConfigMembershipProvider">
        <providers>
            <add name="AspNetWebConfigMembershipProvider" type="LeastPrivilege.AspNetSecurity.Samples.WebConfigMembershipProvider, WebConfigMembershipProvider"/>
        </providers>
    </membership>

    <authentication mode="Forms">
        <forms>
            <credentials passwordFormat="Clear">
                <user name="jack" password="jack"/>
                <user name="jill" password="jill"/>
            </credentials>
        </forms>
    </authentication>

    <authorization>
        <deny users="?" />
    </authorization>
</system.web>

<location path="Dir1" allowOverride="false">
    <system.web>
        <authorization>
            <!-- <allow users="jack" /> -->
            <deny users="*" />
        </authorization> 
    </system.web>
</location>

<location path="Dir2"  allowOverride="false">
    <system.web>
        <authorization>
            <!-- <allow users="jill" /> -->
            <deny users="*" />
        </authorization> 
    </system.web>
</location>
</configuration>

Respuestas a la pregunta(10)

Su respuesta a la pregunta