Я работаю над приложением ASP.Net MVC. Я хочу запретить доступ ко всем пользователям, которые не прошли проверку подлинности или нет в группе AD. Только эта группа AD должна иметь доступ. Исключением является «Вы не пройдете!». стр. Любой может получить доступ к этому.Настройка авторизации и страница с недопустимым доступом
В корне проекта, у меня есть это в моем web.config (остальная часть файла обрезается для краткости):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="401" redirect="/ui/Other/YouShallNotPass.html" />
</customErrors>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<authentication mode="Windows" />
<authorization>
<allow roles="allowedrole"/>
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<httpErrors>
<remove statusCode="401" />
<error statusCode="401"
subStatusCode="2"
responseMode="ExecuteURL"
path="/ui/Other/YouShallNotPass.html" />
</httpErrors>
</system.webServer>
</configuration>
У меня есть второй web.config сидит рядом с ui/Other/YouShallNotPass.html
. Я ожидаю, что это позволит любому получить доступ к этой странице, проверку подлинности или иным образом:
<configuration>
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</configuration>
Я в состоянии проверить это, установив группу AD на один, который не существует. Я не являюсь частью несуществующей группы, поэтому я должен ожидать увидеть страницу YouShallNotPass.html
.
Это не работает должным образом. Я получаю следующую ошибку в своем браузере:
Сообщение об ошибке 401.2 .: Несанкционированное использование. Ошибка входа в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов проверки подлинности, включенных на веб-сервере.
Если я запрошу непосредственно YouShallNotPass.html
, я могу получить к нему доступ после получения запроса для пользователя/прохода.
Что я делаю неправильно? Почему он не будет обслуживать страницу 401, если пользователь не авторизован?
Попробуйте вставить ' ' в web.config вашего 'YouShallNotPass.html' и посмотреть, что произойдет. Поскольку браузер все еще запрашивает пользователя/пароль, это означает, что на странице по-прежнему требуется проверка подлинности Windows (поскольку вы поместили ее в основной файл web.config и не переопределили ее). –
Alisson
Он больше не запрашивает пользователя/пароль, когда я запрашиваю 'YouShallNotPass.html' напрямую. Но любая другая страница, и я до сих пор получаю исходную ошибку. – Amy
Возможно ли, что ваш пользователь пула доступа не имеет доступа к базе данных, на которую вы проверяете подлинность? –