#asp.net #authorization #asp.net-4.0
#asp.net #авторизация #asp.net-4.0
Вопрос:
Мне (разработчику) и одному пользователю (ИМЯ_ДОМЕНА ИМЯ_ПОЛЬЗОВАТЕЛЯ) требуется доступ к одному веб-сайту.
Когда я разрабатывал веб-сайт в Visual Studio, используя «автоматический хост», созданный VS, следующих настроек в web.config было достаточно:
<authentication mode="Windows"/>
<authorization>
<allow users="DOMAIN_NAMEmy_name,DOMAIN_NAMEUSER_NAME" />
<deny users="*" />
</authorization>
Но когда я создал веб-сайт в IIS, я получаю сообщение об ошибке:
Доступ запрещен.
Описание: Произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса. Сервер может быть не настроен для доступа к запрошенному URL.
Сообщение об ошибке 401.2.: неавторизованный: сбой входа в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов аутентификации, включенных на веб-сервере. Обратитесь к администратору веб-сервера за дополнительной помощью.
Какие настройки для ApplicationPoolIdentity и самого веб-сайта необходимо указать?
Большое спасибо!
Редактировать:
Я настроил пул приложений локального IIS на использование идентификатора ‘LocalSystem’, веб-сайт — на использование аутентификации «сквозной» и, как было предложено, отключил «Анонимную аутентификацию», включил «Аутентификацию Windows» — и веб-сайт локально стал работоспособным.
Но локально у меня Windows 7 (IIS7), но в «ТЕСТОВОЙ» среде (где мне нужно развернуть веб-сайт) У меня Windows 2008 server, и на нем нет опции для включения «Проверки подлинности Windows» … не знаю почему … вероятно, это для администратора более высокого уровня, но я являюсь членом группы администраторов…
Думаю, я делаю что-то не так…
Пожалуйста, сообщите.
Ответ №1:
Ваш web.config настроен правильно. Кроме того, убедитесь, что сайт / приложение IIS настроен как:
- чтобы НЕ разрешать анонимный доступ
- принудительная встроенная проверка подлинности Windows
- оставьте пул приложений в качестве сетевой службы
IIS7
- убедитесь, что у вас установлена функция безопасности проверки подлинности Windows в разделе Роли и компоненты.
- В IIS7 перейдите в IIS или представление компонентов, дважды щелкните Аутентификация.
- На странице проверки подлинности выберите Проверка подлинности Windows
- На странице аутентификации отключите анонимную аутентификацию
- Статья в MSDN
IIS6
Найдите диалоговое окно ниже по
- Панель управления / Административные инструменты -> Диспетчер IIS -> Щелкните правой кнопкой мыши веб-сайт -> Свойства -> Безопасность каталога
Комментарии:
1. Я попытался поиграть с AppPoolIdentity, именем пользователя, под которым работает веб-сайт — никакого результата…
2. Сетевое обслуживание — выполнено, но не могу найти те диалоговые окна, которые вы показали. Это должно быть сделано под управлением Windows server 2003… думаю, это IIS6
3. Я ценю вашу помощь, но когда я щелкаю правой кнопкой мыши на веб-сайте (на тестируемом компьютере) Я не вижу элемента «Свойства».
4. Похоже, что IIS7 был настроен на эту машину … не могу сказать точно (наш администратор в отпуске :))
5. Извините, это Windows 2008 R2, а не 2003 … и в результате IIS7.
Ответ №2:
Возможно, это может быть полезно: я начал получать ошибку 401.2. в .Приложение ASPX (никаких изменений в приложении не внесено), в защищенном пути amd формирует auth.:
<authentication mode="Forms">
...
</authentication>
...
<location path="Admin">
<system.web>
<authorization>
<allow roles="Admin,Client" />
<deny users="*" />
</authorization>
</system.web>
</location>
ПОСЛЕ запуска других приложений MVC на том же компьютере / IIS. Кажется, MVC что-то изменил в конфигурации сервера (маршруты, я полагаю). Любая игра с аутентификацией в IIS (компьютер / сервер / сайт) не помогла. Но помогло следующее: я изменил пул приложений с .Net 4.5 на .Net 4.5 Classic для веб-приложения. Разница в режиме конвейера, управляемого пулом, интегрированный / классический.