Олицетворение в 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?

13.08.2008 22:31:17
4 ОТВЕТА
РЕШЕНИЕ

Между IIS7 и IIS6.0 произошли изменения. Я нашел для вас один пост в блоге, который действительно может вам помочь ( нажмите здесь, чтобы увидеть его ).

Вы запускаете свое приложение в интегрированном режиме или в классическом режиме? Из того, что я видел, установка атрибута Impersonate в true должна показывать ошибку 500 со следующим сообщением об ошибке:

Внутренняя Ошибка Сервера. Это ошибка HTTP 500.19: запрошенная страница недоступна, поскольку соответствующие данные конфигурации для этой страницы недействительны.

Вот обходной путь, который предлагается:

Временное решение:

1) Если ваше приложение не использует олицетворение запрашивающего пользователя на этапах BeginRequest и AuthenticateRequest (единственные этапы, когда олицетворение невозможно в интегрированном режиме), игнорируйте эту ошибку, добавив в файл web.config вашего приложения следующее:

<validation validateIntegratedModeConfiguration="false"

/>

2) Если ваше приложение использует олицетворение в BeginRequest и AuthenticateRequest, или вы не уверены, перейдите в классический режим.

Я надеялся, что было полезно понять, как теперь работает IIS 7.0.

8
6.11.2008 00:13:52
@ Максим, это больше не проблема для меня, но это, безусловно, помогает понять проблему. Спасибо!
Esteban Araya 23.02.2009 18:03:17
Добавление этого узла <validation> в <system.webServer> решило проблему для меня в IIS 7.5
MrDustpan 14.08.2014 14:33:58

Интересно ... У меня есть противоположная проблема - неспособность передать аутентификацию через браузер клиента, через веб-сервер и в базу данных в большой корпоративной сети через брандмауэры.

Я также считаю, что аутентификация «базы данных конечного пользователя» в базе данных является плохой идеей и потенциальной угрозой безопасности. Ничто не мешает конечному пользователю загрузить SQL Query и подключиться напрямую к вашей базе данных, так что вам лучше заблокировать свою схему!

@Esteban - уточнил, что я не очень помог вам ответить.

0
21.08.2008 09:00:00

Обычно, если вы выполняете двойную аутентификацию, как это, Kerberos обычно участвует, если только первая аутентификация не является базовой.

Я бы проверил аутентификацию на серверах IIS 6 и удостоверился, что она одинакова на IIS 7.

Если в поле IIS 6 установлено значение «Интегрировано Windows», необходимо проверить параметры Kerberos - имена участников-служб, делегирование и т. Д.

0
17.09.2008 06:33:50

Ваш сервер IIS настроен как доверенный для делегирования SQLServer? Я сталкивался с этим раньше с WebDAV, где нам нужно было, чтобы сервер с IIS доверял файловому серверу для аутентификации от имени файлового сервера.

1
23.10.2008 02:38:35