У нас есть некоторый веб-контент, который настраивается в виртуальных каталогах с использованием встроенной аутентификации Windows. Виртуальные каталоги выполняются в пулах приложений, использующих пользовательскую идентификацию (учетную запись пользователя). Проблема в том, что аутентификация NTLM работает, а аутентификация Kerberos - нет. Это та же конфигурация, которая работала в IIS 6, но нам нужно перейти на IIS 7, а аутентификация Kerberos не работает.
Вот еще немного информации о моей среде:
Настройки аутентификации виртуального каталога:
- Все отключено, кроме аутентификации Windows
- Включить аутентификацию в режиме ядра: включено
Настройки пула приложений:
- Управляемый конвейерный режим: классический
- Удостоверение: пользовательский локальный пользователь
Настройки Web.config:
- режим аутентификации = "Windows"
- system.serviceModel / bindings / basicHttpBinding / binding / security / mode = TransportCredentialOnly
- system.serviceModel / bindings / basicHttpBinding / привязка / безопасность / транспорт / clientCredentailType = Windows
- serviceHostingEnvironment / aspNetCompatibilityEnabled = true
Виртуальный каталог Разрешения:
- Пользовательские локальные группы: мы добавляем пользователей домена в локальные группы для доступа к услуге
Настройки ОС:
- IIS 7
- Windows Server 2008 x64 стандарт SP2
Вот анализ, который я получаю от 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)
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)
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 в Response 2 . Есть идеи почему бы и нет? Нужно ли переконфигурировать некоторые вещи в IIS 7, чтобы заставить работать аутентификацию Kerberos?