Как настроить IIS таким образом, чтобы учетные данные домена пользователя использовались при подключении к SQL-серверу? - PullRequest
7 голосов
/ 01 ноября 2010

Недавно мы выпустили последнюю версию нашего приложения для интрасети, которое теперь использует стандартную проверку подлинности Windows и должно иметь возможность подключения к настроенному серверу SQL с учетными данными домена конечного пользователя.

В последнее время мы обнаружили, что в нескольких развертываниях клиентов, хотя IIS может видеть учетные данные домена пользователя, он не будет передавать их на сервер SQL. Вместо этого он использует анонимную учетную запись. Это несмотря на все правильные шаги (изменение безопасности каталога на Win Auth, обновление Web.Config для использования Win Auth и запрет анонимных пользователей).

Я много читал, чтобы предположить, что нам нужно убедиться, что Kerberos установлен, но я не уверен (а), насколько это действительно (то есть действительно ли это требование?) Или (б) ) как провести расследование, если оно установлено, или как его настроить.

Мы находимся в ситуации, когда нам нужно либо настроить IIS или приложение для работы с клиентом, либо точно объяснить клиенту, что ему нужно сделать, чтобы он работал.

Нам удалось воспроизвести это в нашей внутренней сети с помощью тестового сервера SQL и блока IIS разработчика, поэтому мы собираемся возиться с этой настройкой и посмотреть, сможем ли мы найти решение, но если У кого-нибудь есть какие-нибудь яркие идеи, я буду рад их услышать!

Мне бы особенно хотелось услышать мысли или советы людей с точки зрения Kerberos. Является ли это требованием, и если это так, как я могу указать клиентам, как его следует настроить?

О, и я также видел, как несколько человек упомянули «классическое правило однократного прыжка» для доменов и передачи учетных данных Windows, но я не знаю, какой вес это действительно имеет?

Спасибо!

Мэтт

Ответы [ 3 ]

4 голосов
/ 01 ноября 2010

Это называется Double-Hop Problem и запрещает пересылку учетных данных пользователя третьим лицам.Это происходит, когда они переходят с одного компьютера на другой сайт (первый переход) и пересылают учетные данные на третий компьютер (второй переход).

Проблема не появится, если вы разместите IIS и SQL Serverна том же компьютере.

Более подробная техническая информация об этом опубликована на Как использовать пространство имен System.DirectoryServices в ASP.NET , которое объясняет проблему двойного перехода, а также основные ивторичные токены.

1 голос
/ 01 ноября 2010

Чтобы запустить приложение под учетными данными Active Directory или Windows пользователя, убедитесь в следующем:

  • приложение IIS не разрешает анонимный доступ
  • приложение IIS использует встроенную проверку подлинности Windows
  • строка подключения должна иметь Integrated Security=SSPI, чтобы гарантировать передачу учетных данных пользователя Windows / AD в SQL Server.

    т.е. Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

0 голосов
/ 03 декабря 2010

Вы заявляете, что не знаете, «как проводить расследование, если оно установлено, или как его настраивать».

Для этого я бы искренне рекомендовал инструмент под названием DelegConfig . Это очень удобное приложение, которое вы можете сказать, правильно ли настроен Kerberos.

Распакуйте его в каталог, настройте виртуальный каталог в IIS, чтобы он указывал на него. Перейдите на главную страницу и скажите ему, к какому бэкэнд-серверу вы хотите разрешить доступ (например, UNC, SQL, HTTP и т. Д.), И он сообщит вам правильную настройку или нет, а объяснит, почему .

У него даже есть возможность перестроить Kerberos, чтобы решить проблему, если вы этого пожелаете (хотя я не использовал это - я бы предпочел перенастроить его сам, чтобы понять, что я сделал в будущем)

Я понимаю, что это слишком поздно для вашей конкретной проблемы, но я подумал, что стоит поделиться с другими, которые следуют, особенно с инструментами, объясняющими, почему делегирование работает или не работает. Я нашел это бесценным.

...