Олицетворение в IIS 7.0
-
08-06-2019 - |
Вопрос
У меня есть веб-сайт, который корректно работает под 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?
Решение
Между IIS7 и IIS6.0 произошли изменения.Я нашел для вас одну запись в блоге, которая может вам действительно помочь (нажмите здесь, чтобы увидеть это).
Вы запускаете свое приложение в интегрированном режиме или в классическом режиме?Судя по тому, что я видел, присвоение атрибуту Impersonate значения true должно отобразить ошибку 500 со следующим сообщением об ошибке:
Внутренняя ошибка сервера.Это http error 500.19:Запрашиваемая страница не может быть получена, потому что связанные данные конфигурации для страницы недействительны.
Предлагается следующий обходной путь:
Обходной путь:
1) Если ваше приложение не полагается на выдачу запрашиваемого пользователя на этапах BeginRequest и AuthenticAteRequest (единственные этапы, где подражание невозможна в интегрированном режиме), проигнорируйте эту ошибку, добавив следующее в web.config вашего приложения: Config:
<validation validateIntegratedModeConfiguration="false"
/>
2) Если ваше приложение полагается на олицетворение в BeartRequest и AuthenticAteRequest, или вы не уверены, перейдите в классический режим.
Я надеялся, что это было полезно для понимания того, как сейчас работает IIS 7.0.
Другие советы
Настроен ли ваш сервер IIS так, чтобы ему доверял делегирование со стороны SQLServer?Я уже сталкивался с этим раньше при использовании WebDAV, где нам приходилось иметь сервер с IIS, которому файловый сервер доверял, для аутентификации от имени файлового сервера.
Интересный...У меня противоположная проблема - Не имея возможности чтобы пройти аутентификацию из браузера клиента через веб-сервер в базу данных в большой корпоративной сети через брандмауэры.
Я также считаю, что аутентификация «сквозного пользователя» в базе данных — плохая идея и потенциальный риск для безопасности.Ничто не мешает конечному пользователю загрузить SQL-запрос и подключиться напрямую к вашей базе данных, поэтому вам лучше заблокировать вашу схему!
@Esteban - Уточнил мой не очень полезно помочь вам отвечать.
Обычно, если вы выполняете двойную аутентификацию таким образом, обычно используется Kerberos, если только первая аутентификация не является базовой.
Я бы проверил аутентификацию на серверах IIS 6 и убедился, что она такая же и на IIS 7.
Если в поле IIS 6 установлено значение «Встроенная Windows», вам необходимо проверить настройки Kerberos — имена участников-служб, делегирование и т. д.