Олицетворение в IIS 7.0
У меня есть веб-сайт, который работает правильно под IIS 6.0: он аутентифицирует пользователей с учетными данными Windows, а затем при обращении к службе, которая обращается к БД, он передает учетные данные.
В IIS 7.0 те же параметры конфигурации не передают учетные данные, и в БД запускается NT AUTHORITY\ANONYMOUS.
Я что-то упускаю? Я отключил анонимный доступ на своем веб-сайте IIS 7.0, но не могу заставить его работать.
Это настройки, которые я использую на IIS 6.0 и 7.0:
<authentication mode="Windows">
<identity impersonate="true">
Что изменилось с 6.0 до 7.0?
4 ответа
Произошли изменения между IIS7 и IIS6.0. Я нашел для вас одно сообщение в блоге, которое может вам помочь ( нажмите здесь, чтобы увидеть его).
Вы запускаете приложение в интегрированном режиме или в классическом режиме? Из того, что я видел, установка атрибута Impersonate в true должна отображать ошибку 500 со следующим сообщением об ошибке:
Внутренняя ошибка сервера. Это ошибка HTTP 500.19: запрошенная страница недоступна, поскольку соответствующие данные конфигурации для этой страницы недействительны.
Вот обходной путь, который предлагается:
Временное решение:
1) Если ваше приложение не использует олицетворение запрашивающего пользователя на этапах BeginRequest и AuthenticateRequest (единственные этапы, когда олицетворение невозможно в интегрированном режиме), игнорируйте эту ошибку, добавив в файл web.config вашего приложения следующее:
<validation validateIntegratedModeConfiguration="false"
/>
2) Если ваше приложение использует олицетворение в BeginRequest и AuthenticateRequest, или вы не уверены, перейдите в классический режим.
Я надеялся, что было полезно понять, как теперь работает IIS 7.0.
Ваш сервер IIS настроен как доверенный для делегирования SQLServer? Я сталкивался с этим раньше с WebDAV, где нам нужно было, чтобы сервер с IIS доверял файловому серверу для аутентификации от имени файлового сервера.
Обычно, если вы выполняете двойную аутентификацию, как это, Kerberos обычно участвует, если только первая аутентификация не является базовой.
Я бы проверил аутентификацию на серверах IIS 6 и удостоверился, что она одинакова на IIS 7.
Если в поле IIS 6 установлено значение "Интегрировано Windows", необходимо проверить параметры Kerberos - имена участников-служб, делегирование и т. Д.
Интересно... У меня есть противоположная проблема - невозможность передать аутентификацию через клиентский браузер, через веб-сервер и в базу данных в большой корпоративной сети через брандмауэры.
Я также считаю, что аутентификация "базы данных конечного пользователя" в базе данных является плохой идеей и потенциальной угрозой безопасности. Ничто не мешает конечному пользователю загрузить SQL Query и подключиться напрямую к вашей базе данных, так что вам лучше заблокировать свою схему!
@Esteban - уточнил мой не очень полезный, чтобы помочь вам ответить.