Проверка подлинности Kerberos в IIS 7



У нас есть некоторый веб-контент, который настраивается в виртуальных каталогах с помощью встроенной проверки подлинности windows. Виртуальные каталоги выполняются в пулах приложений, использующих пользовательское удостоверение (пользовательскую учетную запись пользователя). Проблема заключается в том, что аутентификация NTLM работает, а аутентификация Kerberos-нет. Это та же конфигурация, которая работала в IIS 6, но нам нужно перейти на IIS 7, и проверка подлинности Kerberos не работает.



Вот еще немного информации о моем окружающая среда:



Параметры Аутентификации Виртуального Каталога:




  • все отключено, кроме проверки подлинности Windows

  • включить аутентификацию в режиме ядра: включено


Настройки Пула Приложений:




  • Режим Управляемого Конвейера: Классический

  • Identity: пользовательский локальный пользователь


Паутина.настройки конфигурации:




  • режим аутентификации = "Windows"

  • система.средство servicemodel/привязки/привязки basichttpbinding/связывания/безопасности/режим = TransportCredentialOnly

  • система.средство servicemodel/привязки/привязки basichttpbinding/связывания/безопасности/транспорта/clientCredentailType = окна

  • serviceHostingEnvironment/aspNetCompatibilityEnabled = true


Виртуальный Каталог Разрешения:




  • пользовательские локальные группы: мы добавляем пользователей домена в локальные группы для доступа к сервису


Настройки ОС:




  • IIS 7

  • Windows Server 2008 x64 standard С пакетом обновления 2




Вот анализ, который я получаю от fiddler, сравнивая IIS 6 с IIS 7. Проверка подлинности Kerberos отлично работает в IIS 6 с пулом приложений, работающим с пользовательским удостоверением.



Ссылка (IIS 6) (работает):



Скрипач:



(использование доменапользователя)



Запрос 1 (без авт.)



No Proxy-Authorization Header is present.
No Authorization Header is present.


Ответ 1 (401) (вызов)



No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM


Запрос 2 (билет Kerberos)



Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>


Ответ 2 (401) (Kerberos ответ)



WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>


Запрос 3 (билет Kerberos)



Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>


Ответ 3 (401) (Kerberos reply)



WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>


Запрос 4 (билет Kerberos)



Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>


Ответ 4 (200) (Kerberos Reply)



WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>


И транзакция завершается, и браузер отображает страницу.





(IIS 7) (не работает):



Скрипач:



(использование доменапользователя)



Запрос 1 (без авт.)



No Proxy-Authorization Header is present.
No Authorization Header is present.


Ответ 1 (401) ( Переговоры)



No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM


Запрос 2 (билет Kerberos)



Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>


Ответ 2 (401) (Переговоры)



No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM


Обратите внимание, что IIS 7 не принимает мой билет Kerberos в ответе 2. Есть идеи, почему бы и нет? Нужно ли перенастроить некоторые компоненты IIS 7, чтобы обеспечить работу проверки подлинности Kerberos?
952   2  

2 ответов:

Разрешение

Чтобы заставить IIS 7 согласовывать аутентификацию, как это делает IIS 6, мне пришлось установить useAppPoolCredentials элемента windowsAuthentication моего виртуального каталога в applicationHost.конфигурационный файл в true. Это делается с помощью одной из следующих команд:

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication -useAppPoolCredentials:true

Для применения к отдельным заявкам:

Первая разблокировка:

%windir%\system32\inetsrv\appcmd.exe unlock config /section:windowsAuthentication

Затем примените:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/myApp/" /section:windowsAuthentication -useAppPoolCredentials:true

Примечание - это на самом деле не делает Kerberos работать. Что он делает это заставьте IIS 7 вести себя как IIS 6. Это означает, что если согласование Kerberos между сервером и клиентом завершается неудачей, то сервер автоматически возвращается к NTLM. Это на самом деле то, что заставило аутентификацию работать для меня (NTLM).

Используется ли поставщик Negotiate:Kerberos для проверки подлинности Windows? Если существует проблема с Kerberos, вы можете получить более подробную информацию о проблеме, запустив Network Monitor (или что-то подобное, например WireShark ) на клиенте при попытке аутентификации. Посмотрите на сообщения в процессе Internet Explorer,и вы можете увидеть некоторые действия Kerberos.

Comments

    Ничего не найдено.