Интегрированная аутентификация Windows с IIS, Firefox и SQL Server - PullRequest
15 голосов
/ 09 апреля 2009

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

Затем я подключаюсь к SQL Server с интегрированной безопасностью = SSPI в строке подключения.

Это отлично работает с Microsoft Internet Explorer, он автоматически аутентифицирует меня, когда я вошел в домен, и я вижу, что logon_user - это моя учетная запись домена, а строка соединения с SQL Server работает просто отлично.

Однако, когда я вхожу в систему с помощью Firefox, все меняется.

Во-первых, мне предлагается пройти аутентификацию, что нормально и правильно, поскольку Firefox не настроен на доверие локального хоста, достаточного для автоматической отправки учетных данных (и, действительно, я знаю, как ввести это доверие, это не проблема) , Затем я вхожу в систему, что опять хорошо, при условии, что я ввожу данные учетной записи домена, все в порядке. Действительно, один или два отладочных оператора показывают, что logon_user по-прежнему является моей учетной записью домена, и все в порядке.

Однако, когда я подключаюсь к SQL Server (который работает на удаленном сервере, к которому у моей учетной записи домена есть полные привилегии sysadmin), я получаю следующую ошибку:

Microsoft OLE DB Provider for SQL Server (0x80040E4D)
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Это указывает на то, что в стеке аутентификации что-то не так, по какой-то причине IIS не работает как аутентифицированная учетная запись, когда я аутентифицируюсь с использованием аутентификации Windows из firefox.

Это также хорошо работает при использовании Google Chrome.

Есть предложения?

Ответы [ 3 ]

28 голосов
/ 09 апреля 2009

AS отмечено Pontus Gagge , IIS необходимо передать билет Kerberos на SQL Server. Этого было достаточно, чтобы склонить мой Google-фу в правильном направлении.

Firefox поддерживает Kerberos, но вы должны указать, каким доменам он доверяет отправлять токены Kerberos.

  1. Открыть Firefox
  2. В адресной строке введите: about: config
  3. Firefox3.x и более поздних версий требует от вас согласия на то, что вы будете действовать с осторожностью.
  4. После загрузки страницы конфигурации в поле фильтра введите: network.negotiate-auth
  5. Измените network.negotiate-auth.trusted-uris, дважды щелкнув строку и введите yourdomain.com
  6. Можно добавить несколько доменов, разделив их запятыми, например yourdomain.com, yourotherdomain.com

Примечание: Это , а не , то же самое, что gbn решение , которое просто настраивает Firefox, чтобы он не запрашивал вход в домен данные учетной записи при входе в систему.

Кроме того, если вы уже пытались пройти аутентификацию через стек в текущем сеансе Firefox, вам потребуется перезапустить Firefox, чтобы это работало.

5 голосов
/ 09 апреля 2009

IIS должен передать билет Kerberos на SQL Server, чтобы этот сценарий работал. MSIE получает билет сеанса рабочей станции, тогда как Firefox согласовывает свою собственную аутентификацию (а не Kerberos).

Проверить, например, этот плотный пост в блоге как отправная точка для понимания того, что нужно. Я не уверен, что FF поддерживает MS-Kerberos.

Имейте в виду, что даже получить аутентификацию MSIE-> IIS-> SQL Server может быть непросто, если у вас неверные версии или конфигурация доверия ...

5 голосов
/ 09 апреля 2009
  1. Открыть Firefox
  2. В адресной строке введите: about: config
  3. Firefox3.x и более поздних версий требует, чтобы вы согласились с осторожностью.
  4. После загрузки страницы конфигурации в поле фильтра введите: network.automatic
  5. Измените network.automatic-ntlm-auth.trusted-uris, дважды щелкнув строку и введя http://www.replacewithyoursite.com
  6. Можно добавить несколько сайтов, разделив их запятыми, например http://www.replacewithyoursite.com, http://www.replacewithyourintranetsite.com

Я также использую надстройку IEtab для сайтов интрасети

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...