Вопрос или проблема
У меня есть приложение, опубликованное через IIS 8.5 на Windows Server 2012, которое может использовать интегрированные учетные данные Windows для SSO. Пользователи могут успешно войти в приложение и переходить на большинство страниц aspx. Однако, когда пользователи пытаются войти на определенную страницу aspx, они получают запрос на аутентификацию Windows, где им необходимо ввести свои учетные данные домена 10 раз подряд, прежде чем им будет разрешен доступ к странице.
С точки зрения IIS, для виртуального каталога приложения указана ТОЛЬКО аутентификация Windows. Я могу обойти эту проблему, если включу анонимную аутентификацию (пользователи не видят запроса на аутентификацию Windows, когда пытаются перейти на страницу aspx), но это, очевидно, нарушает возможность пользователей входить с использованием интегрированных учетных данных Windows, что для них неприемлемо. В связи с этим я заподозрил, что это может быть какой-то проблемой с разрешениями NTFS/доступом к одной из страниц ASPX или DLL приложения. Однако я проверил все соответствующие права на файлы, и это не дало результата.
Я сделал следующее:
– Проверил права на страницу aspx, к которой пользователи пытаются получить доступ, и, с точки зрения AD, все кажется в порядке. У пользователей есть правильные права.
– Проблема не возникает, когда входить непосредственно на сервер приложения.
– Доменные администраторы также испытывают эту проблему при входе в приложение с клиентского рабочего места.
– Я запустил трассировку Fiddler и Wireshark, и, как и ожидалось, я получаю ошибку 401.
– Проблема не возникает у пользователей, которые входят в приложение, используя не-Windows учетные данные.
У меня почти закончились идеи по тому, что можно проверить — есть ли у кого-нибудь другие мысли?
Итак, описание ошибки выглядит так:
HTTP Error 401.2 – Unauthorized: Access is denied due to server configuration.
В основном, ваши клиенты ожидают один тип аутентификации, а сервер не настроен на его предоставление, поэтому аутентификация не проходит во время начальной коммуникации клиент-сервер, когда они пытаются согласовать метод аутентификации.
По моему опыту, это обычно проблема, связанная с Kerberos, если не по другим причинам, то из-за того, что настройки по умолчанию, похоже, включают аутентификацию Kerberos в неработоспособном состоянии… так что это то, на что я бы первым делом обратил внимание. В частности, убедитесь, что если IIS работает под учетной записью службы домена, у вас зарегистрировано SPN (Service Principal Name), что, судя по вашему описанию, у вас отсутствует.
Конечно, это также может быть проблема делегирования, для которой есть пара статей, или даже проблема, не связанная с Kerberos.
Веселые времена, не правда ли? И на случай, если ничего из этого не поможет, вот полезное руководство, которое я сохраняю и которое датируется 2003 годом, но все еще актуально для устранения неполадок с базовой аутентификацией. Если ничего другого, это должно помочь вам сузить круг проблемы или, возможно, обойти ее, заставив всех использовать более простой метод аутентификации.
Окончательное решение этой проблемы было найдено в настройках IE. Когда мы отметили опцию проверки наличия новых версий сохраненных страниц при каждом посещении, это вызвало исчезновение проблемы. При повторном включении опции проблема снова возникла.
Ответ или решение
Проблема, которую вы описываете, связана с тем, что пользователи сталкиваются с множественными запросами на ввод учетных данных Windows при попытке доступа к определенной странице ASPX вашего веб-приложения, опубликованного в IIS 8.5 на Windows Server 2012. Давайте разберем возможные решения и причины данной ситуации.
1. Проверка аутентификации
Убедитесь, что в IIS для вашего виртуального каталога настроена только Windows Authentication. Иногда может возникать конфликт при включении Anonymous Authentication или других методов аутентификации, что приводило бы к подобным проблемам.
2. Установка и настройка SPN
Если ваше IIS работает под учетной записью доменной службы, обязательно зарегистрируйте Service Principal Name (SPN). Это критически важно для корректной работы механизма Kerberos:
- Используйте команду
setspn -A HTTP/имя_сервера имя_пользователя
для регистрации SPN.
3. Проверка доверия и делегирования
Если ваша конфигурация использует делегирование Kerberos, убедитесь, что в Active Directory правильно настроены права делегирования для учетной записи, под которой работает служба IIS.
4. Проверьте NTFS/Share права
Хотя вы уже проверили права, убедитесь, что у всех нужных пользователей есть соответствующие разрешения на доступ к файлам и каталогам; специальные разрешения могут влиять на возможность аутентификации.
5. Настройки браузера
Ваша конечная рекомендация по проверке опций в Internet Explorer также важна. Иногда настройка браузера на проверку наличия обновленных версий сохраняемых страниц при каждом посещении может вызывать проблемы с аутентификацией:
- На вкладке Безопасность в свойствах Internet Explorer, убедитесь, что настройки для Интернет и Локальной сети (Интранет) позволяют автоматическую передачу учетных данных.
- Для этого выберите "Настройка уровня безопасности" и убедитесь, что активно использование автоматической аутентификации.
6. Посмотрите на политику безопасности Windows
Проверьте настройки групповой политики, связанной с аутентификацией и безопасностью. В некоторых случаях, политика может блокировать аутентификацию по Kerberos без явной настройки.
7. Логи и мониторинг ошибок
Используйте возможности мониторинга и журналирования IIS для выявления ошибок. Логи могут предоставить более подробную информацию об ошибках аутентификации, что упростит диагностику.
8. Дополнительные ресурсы и документация
Используйте документацию Microsoft и различные статьи по dépannage аутентификации, чтобы углубиться в решение проблем. Есть множество статей, которые могут помочь сузить круг поиска, если предложенные здесь решения не помогут.
Заключение
Если после проверки всех перечисленных пунктов проблема все еще существует, возможно, имеет смысл создать новую тестовую конфигурацию приложения и IIS с минимальным набором настроек, чтобы локализовать проблему. Это может помочь изолировать проблему с аутентификацией и вернуть вас к рабочему состоянию.