Известные проблемы, связанные с конфигурацией Kerberos (SharePoint Server 2010)

 

Применимо к: SharePoint Server 2010

Последнее изменение раздела: 2016-11-30

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

Для некоторых клиентов Kerberos (включая .NET Framework, Internet Explorer 7 и Internet Explorer 8) существует известная проблема, связанная с неправильным формированием имен участников-служб при попытке проверки подлинности для приложений с поддержкой протокола Kerberos, которые настроены на нестандартных портах (порты с номерами, отличающимися от 80 и 443). Причиной таких проблем является неправильное построение клиентами имени участника-службы в запросе TGS, в котором не указывается номер порта (атрибут Sname запроса TGS).

Пример:

Если веб-приложение выполняется по адресу http://intranet.contoso.com:1234, клиент будет запрашивать билет для службы с именем участника-службы http/intranet.contoso.com вместо http/intranet.contoso.com:1234.

Дополнительные сведения об этой проблеме можно найти в следующих статьях:

Чтобы обойти эту проблему, зарегистрируйте имена участников-служб с номером порта и без него. Пример:

  • http/intranet

  • http/intranet.contoso.com

  • http/intranet:12345

  • http/intranet.contoso.com:12345

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

Обратите внимание, что это обходное решение не применяется в следующих ситуациях:

  • Использование нестандартного порта несколькими веб-приложениями

  • Привязка веб-приложений к имени узла сервера или такому же заголовку узла (через разные порты)

  • Использование разных учетных записей служб пулами веб-приложений IIS

В таких случаях применение рекомендуемого обходного решения приведет к регистрации повторяющихся имен участников-служб для разных учетных записей служб, что нарушит работу механизма проверки подлинности Kerberos.

Если несколько веб-сайтов используют общее имя узла с разными портами и разными удостоверениями пула приложений IIS, использовать проверку подлинности Kerberos на всех веб-сайтах не получится. (Протокол Kerberos в этой ситуации может использоваться только одним приложением.) Чтобы использовать в этом сценарии проверку подлинности Kerberos на всех приложениях, необходимо выполнить любые из следующих решений:

  1. Запускайте все веб-приложения под одной общей учетной записью службы

  2. Запускайте каждый веб-сайт с собственным заголовком узла

Проверка подлинности Kerberos и имена CNAME DNS

Для некоторых клиентов Kerberos (включая Internet Explorer 7 и Internet Explorer 8) существует известная проблема, которая возникает при попытке проверки подлинности в службах с поддержкой Kerberos, настроенных на разрешение с использованием имен CNAME DNS вместо записей A. Причиной таких проблем является неправильное построение клиентами имени участника-службы в запросе TGS, при создании которого используется имя узла (запись A) вместо псевдонима (CNAME).

Пример:

Запись A: wfe01.contoso.com

CNAME: intranet.contoso.com (псевдонимы wfe01.contoso.com)

При попытке проверки подлинности для сайта http://intranet.contoso.com клиент формирует неправильное имя участника-службы и запрашивает билет Kerberos для имени http/wfe01.contoso.com вместо псевдонима http/intranet.contoso.com

Дополнительные сведения об этой проблеме можно найти в следующих статьях:

https://support.microsoft.com/kb/911149/ru-ru

https://support.microsoft.com/kb/938305/ru-ru

Чтобы обойти эту проблему, настройте службы с поддержкой Kerberos на использование записей A вместо псевдонимов CNAME DNS. В исправлении, представленном в этой статье базы знаний, проблема решена для Internet Explorer, но не устранена для платформы .NET, которая используется решением Microsoft Office SharePoint Server для связи с веб-службой.

Проверка подлинности Kerberos и проверка подлинности в режиме ядра

Примечание

В продуктах SharePoint 2010 не поддерживается проверка подлинности в режиме ядра. Эта информация приводится исключительно для справки.

В версии IIS 7.0 был представлен новый компонент "Проверка подлинности в режиме ядра". Если веб-сайт IIS настроен в этом режиме, проверка подлинности запросов клиента выполняется драйвером HTTP.sys вместо рабочего процесса пула приложений. Поскольку драйвер HTTP.sys работает в режиме ядра, это дает некоторое увеличение производительности, однако сопряжено с определенными сложностями при настройке Kerberos. Это связано с тем, что драйвер HTTP.sys выполняется под удостоверением компьютера, а не рабочего процесса. При получении билета Kerberos драйвер HTTP.sys по умолчанию пытается расшифровать его с использованием ключа шифрования сервера (секрет), а не ключа удостоверения, под которым выполняется рабочий процесс.

Если проверка подлинности в режиме ядра настроена для одного веб-сервера, протокол Kerberos будет работать без дополнительной настройки и дополнительных имен участников-служб, поскольку сервер автоматически регистрирует имя участника службы HOST при добавлении в домен. Если в среде реализуется балансировка нагрузки между несколькими серверами, установленная по умолчанию конфигурация проверки подлинности в режиме ядра будет работать с регулярными сбоями или не работать полностью, поскольку у клиента не будет возможности проверить действительность билета службы, полученного в запросе TGS, для сервера, который проверяет подлинность запроса.

Чтобы обойти эту проблему, можно выполнить следующие действия:

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

При использовании протокола Kerberos со службами IIS 7.0 и более поздних версий может наблюдаться увеличение объемов трафика, относящегося к проверке подлинности. Это может быть связано с параметрами проверки подлинности Windows в службах IIS, в частности:

AuthPersistNonNTLM

Необязательный логический атрибут.

Определяет возможность автоматической повторной проверки подлинности в службах IIS для каждого запроса не по протоколу NTLM (например, Kerberos), в том числе для запросов, использующих то же подключение. Значение true позволяет выполнять многократную проверку подлинности для одного подключения.

По умолчанию используется значение false.

Примечание

При установке значения false проверка подлинности клиента для одного подключения выполняется только один раз. После этого на сервере служб IIS кэшируется маркер или билет для установленного сеанса TCP.

authPersistSingleRequest

Необязательный логический атрибут.

При установке значения true данные проверки подлинности сохраняются только для одного запроса в подключении. После выполнения запроса эти данные сбрасываются, и для следующего запроса сеанса принудительно выполняется повторная проверка подлинности.

По умолчанию используется значение false.

Инструкции по настройке хранения для данных проверки подлинности в службах IIS 7.0 см. в статьях, посвященных возможному снижению производительности при использовании встроенной проверки подлинности Windows совместно с протоколом проверки подлинности Kerberos в службах IIS 7.0 и реализации проверки подлинности (Возможно, на английском языке).

Проверка подлинности Kerberos и проблемы, связанные с повторяющимися или отсутствующими именами участников-служб

При настройке проверки подлинности Kerberos существует вероятность случайной настройки повторяющихся имен участников-служб, особенно при использовании средства SetSPN -A или "Редактирование ADSI" (adsiedit.msc) для создания имен участников-служб. Рекомендуется использовать для создания имен участников-служб средство SetSPN -S, поскольку при указании параметра -S проверяется наличие повторяющихся имен участников-служб.

Чтобы получить сведения о всех присутствующих в среде повторяющихся именах участников-служб, используйте команду SetSPN -X (для ОС Windows 2008 или более поздних версий). При обнаружении таких имен необходимо определить причины регистрации повторяющихся имен участников-служб и удалить неиспользуемые дубликаты. Если в среде две службы выполняются под двумя разными удостоверениями с одним именем источника-службы (повторяющиеся имена), необходимо настроить для одной из них другое имя участника-службы или использовать общее удостоверение службы.

Чтобы получить сведения о незарегистрированных или неверно зарегистрированных именах участников-служб, выполните команду SetSPN -Q <вставить_имя_участника-службы>, которая проверяет существование заданного имени.

Максимальный размер маркера Kerberos

В некоторых средах пользователи могут входить одновременно в несколько групп Active Directory, в результате чего увеличивается размер соответствующих билетов Kerberos. При слишком большом размере билета возможен сбой проверки подлинности Kerberos. Дополнительные сведения о настройке максимального размера маркера см. в статье, посвященной новому решению проблем с проверкой подлинности Kerberos для пользователей, принадлежащих большому числу групп (Возможно, на английском языке) (https://support.microsoft.com/kb/327825/ru-ru) (Возможно, на английском языке).

Примечание

При настройке максимального размера маркера учтите, что превышение максимально допустимого значения соответствующего параметра реестра может привести к ошибкам проверки подлинности Kerberos. Не рекомендуется задавать значения выше 65535 (FFFF в шестнадцатеричной системе).

Исправления проверки подлинности Kerberos для ОС Windows Server 2008 и Windows Vista

Сбой проверки подлинности Kerberos, вместе с кодом ошибки 0X80090302 или 0x8009030f на компьютере под управлением Windows Server 2008 или Windows Vista при использовании алгоритма AES (https://support.microsoft.com/kb/969083/ru-ru).

Может потребоваться установка исправления проверки подлинности Kerberos на все компьютеры среды под управлением Windows Server 2008 или Windows Vista. К ним относятся также компьютеры с SharePoint Server 2010, SQL Server или Windows Server 2008, для которых средой SharePoint Server предпринимается попытка проверки подлинности Kerberos. Если вы сталкиваетесь с описываемыми в этой статье признаками, установите исправление, следуя инструкциям на странице службы поддержки.