Web.config разрешает доступ к местоположению для определенного пользователя
У меня есть веб-сервер, с которого пользователи могут загружать файлы, специфичные для каждого пользователя. Чтобы быть уверенным, что каждый пользователь может загружать только свои файлы, они должны пройти аутентификацию черезBasic-аутентификации, Таким образом, для каждого пользователя на сервере есть учетная запись windows, которая имеет права на чтение определенной папки пользователя.
Теперь я хочу перенести эту функциональность на другой сервер. Я не хочу создавать учетные записи Windows для пользователей, но все еще сохраняю базовую аутентификацию. Поэтому я используюПользовательский модуль базовой аутентификации HTTP в сочетании сCustom MembershipProvider это позволяет мне определять пользователей в web.config.
Аутентификация работает довольно хорошо, но после входа в систему либоjack
или жеjill
(см. web.config) Я могу получить доступ к обоим местамDir1
а такжеDir2
, Это также тот случай, если я закомментирую<allow users="jack" />
участие в тегах местоположения.
Дополнительная информация: я создал файл Default.aspx и добавил
<% Response.Write(HTTPContext.Current.User.Identity.Name) %>
который возвращает правильное имя пользователя в зависимости от того, кто вошел в систему.
<% Response.Write(HTTPContext.Current.User.Identity.IsAuthenticated) %>
возвращает True.
Что я должен сделать это толькоjack
может получить доступ (= скачать файлы с)Dir1
и толькоjill
может получить доступ (= скачать файлы с)Dir2
а не наоборот?
РЕДАКТИРОВАТЬ: я пытался добавить файлы web.config для каждого подкаталога вместо тегов местоположения, как указано utkai - с тем же результатом. Каждый пользователь может получить доступ к любому каталогу.
Вот мой файл 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>