Проблемы с аутентификацией Kerberos

Опубликовано: 13.02.2013
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке

Месяц назад ко мне пришел запрос о поддержке, в котором было указано, что пользователь не может открыть отчет в портале Сognos BI, хотя у других пользователей этот же отчет открывается. Пользователь был не простой, а директор одного из заводов корпорации, поэтому тесты в сотрудничестве с ним были очень ограничены. Что мне удалось выяснить, так это номер ошибки, который показывал Internet Explorer при попытке открыть портал Cognos BI - Error 400. Что интересно, ошибка возникала только в браузере Internet Explorer. В FireFox пользователь мог открыть не только портал, но и нужный отчет.

Сначала я подумал на групповые политики, которые накладываются на его учетную запись, тогда я дал тестовой учетной записи точно такие же права, как у того пользователя, и положил тестовую учетную запись в тот же контейнер. Как ни странно, у тестового пользователя отчет открывался и в IE, и в FireFox, и в Chrome. (Забегу вперед и немного раскрою ключ к решению проблемы: для тестов я пользовалcя своей учетной записью для входа в систему, но ручной аутентификацией в портале Cognos BI, чтобы войти в портал тестовым пользователем). Теперь, когда я понял, что проблема не в отчете, я решил протестировать отчет на каком-нибудь стандартном компьютере, так как, возможно, у директора завода что-то было установлено на его ПК, а на моем администраторском ПК явно было много нестандартного, чтобы продолжать тесты. Итак, я дал тестовой учетной записи права на виртуальный ПК в системе Citrix XenDesktop. Тестовый пользователь не смог войти в виртуальную систему - ошибка доступа. Тогда я удалил все группы тестового пользователя и оставил только те, что дают доступ в порталы Citrix и Cognos BI - все прекрасно заработало: пользователь смог зайти в виртуальный компьютер и внутри него открыть отчет. Итак, стало ясно, что проблема заключается в членстве пользователя. Далее больше - я понял, почему отчет работал в FireFox и в IE при использовании ручного входа - FireFox не поддерживает Pass-Through технологию для IIS сервера (нужно вручную входить в портал со своим логином и паролем), а в IE я сам отказывался от автоматической аутентификации. То есть проблема заключалась во взаимодействии клиента и сервера при использовании встроенной проверки подлинности учетной записи Windows.

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

Изучив несколько статей в интернете и посоветовавшись с коллегами, я понял, что проблема заключается в длине токена Kerberos, который используется для авторизации пользователя в системах и на ресурсах. По умолчанию используется токен длиной 12 КБ, что недостаточно для большого членства в группах - все описания групп просто не убираются в 12 КБ. Но это касается только серверных систем, например из-за этого ограничения не открывался виртуальный компьютер Citrix XenDesktop. Для решения проблемы в порталах на базе IIS применяется еще одна настройка - максимальный размер заголовка HTTP, который по умолчанию равен 16 КБ.

Итак, рекомендованные действия для устранения проблем с аутентификацией Kerberos:

1. Увеличить на сервере, где расположена проблемная система, размер токена Kerberos до 48 КБ (требуется перезагрузка сервера):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\MaxTokenSize
DWORD:0000c000

2. Увеличить размер заголовка HTTP до 64 КБ на IIS сервере, где расположен портал (требуется перезагрузка сервиса):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters\MaxFieldLength
DWORD:0000ffff

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters\MaxRequestBytes
DWORD:0000ffff

3. Почистить учетные записи, исключив из их членства ненужные группы.

Применив вышеназванные пункты на серверах Cognos BI и Citrix XenDesktop, проблема со входом в портал и виртуальную машину исчезла.

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