Интегрированная проверка подлинности Windows с помощью IIS, Firefox и SQL Server
У меня есть веб-сайт, работающий на IIS на моем локальном хосте. Этот веб-сайт имеет защиту каталога, позволяющую разрешить только встроенную проверку подлинности Windows. Он является частью интрасети и нуждается в аутентификации через наши учетные записи домена.
Затем я подключаюсь к SQL Server с Integrated Security = 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.
Любые предложения?
Ответы
Ответ 1
AS отметил Понтус Гагге, IIS необходимо передать Kerberos билет на SQL Server. Этого было достаточно, чтобы опрокинуть Google-фу в правильном направлении.
Firefox поддерживает Kerberos, но вы должны сказать, в каких доменах он доверяет также отправлять токены Kerberos.
- Открыть Firefox
- В строке адреса введите: about: config
- Firefox3.x и более поздние версии требуют, чтобы вы согласились с тем, что будете действовать осторожно.
- После загрузки страницы конфигурации в поле фильтра введите: network.negotiate-auth
- Измените network.negotiate-auth.trusted-uris, дважды щелкнув строку и введите yourdomain.com
- Несколько доменов могут быть добавлены запятой, разделяющей их, например, yourdomain.com, yourotherdomain.com
Примечание. Это не то же самое, что gbn решение который просто настраивает firefox, чтобы не предлагать вам вводить данные учетной записи домена при входе в систему.
Кроме того, если вы уже пытались пройти аутентификацию через стек в текущем сеансе Firefox, вам необходимо перезагрузить Firefox, чтобы это работало.
Ответ 2
Я также использую надстройку IEtab для сайтов интрасети
Ответ 3
IIS необходимо передать Kerberos билет на SQL Server, чтобы этот сценарий работал. MSIE собирает сессионный билет рабочей станции, тогда как Firefox ведет переговоры о своей собственной аутентификации (а не Kerberos).
Проверьте, например. этот плотный пост в блоге в качестве отправной точки для понимания того, что необходимо. Я не уверен, поддерживает ли FF MS-Kerberos.
Имейте в виду, что даже получение аутентификации MSIE- > IIS- > SQL Server может быть сложным, если у вас неправильные версии или настройка доверия...