Ошибка 400 (Bad Request) при открытии консоли администратора
Автор Vladislav Fomichev, Last modified by Vladislav Fomichev на 22 марта 2021 11:05 AM

Вопрос

При открытии консоли администратора отображается ошибка 400 или наполовину загруженная страница(без картинок, стилей и т.п).

Ответ

Проблема связана с большим количеством групп, в которых состоит пользователь. При Windows аутентификации в заголовке передается токен Kerberos. На размер токена влияет членство пользователя в группах, в том числе и вложенных(также влияет размер атрибута пользователя из AD SIDHistory), при большом кол-ве групп токен, соответственно, увеличивается и превышает размеры заголовка запросов по умолчанию 16KB.

Решение

Для решения проблемы есть 2 возможных варианта:

1. При возможности уменьшите кол-во групп пользователя или размер атрибута пользователя из AD SIDHistory, чтобы размер заголовка соответствовал значениям по умолчанию. Для проверки текущего размера токена можно использовать PS1 скрипт от Microsoft: ссылка.

2. Изменить размеры заголовка по умолчанию. 

Изменение размеров заголовка

1. Создать параметр с типом DWORD MaxFieldLength со значением 65536 (Dec) \ 10000 (Hex) и параметр с типом DWORD MaxRequestBytes со значением 16777216 (Dec) \ 100000 (Hex). Путь в реестре HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters. Данные параметры увеличивают размер строки запроса до максимально поддерживаемых.

2. Необходимо создать параметр DWORD MaxTokenSize со значением 48000 (Dec) \ bb80 (Hex). Путь в реестре: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Данное значение является значением по умолчанию, но Microsft утверждает, что при смене значений из 1-го пункта данный параметр необходимо указать.

3. Настройки необходимо выполнить на всех серверах Indeed AM, которые работают в связке с консолью, и на всех серверах Indeed Admin Console. После применения параметров требуется обязательная перезагрузка машин.

Внимание! Изменение данных параметров до максимальных значений позволит отправлять запросы большого размера в IIS, что считается крайне не безопасно. Если после изменений размеров до максимальных значение проблема была устранена, то крайне рекомендуется выполнить уменьшение значений до безопасных.

Рекомендации по уменьшению значений

Лучшим способом будет постепенное уменьшение значений с проверкой работоспособности системы. 

1. Уменьшите параметр максимального размера запроса(MaxRequestBytes) до 65536 (Dec) \ 10000 (Hex), остальные параметры оставьте без изменений. Изменения необходимо выполнять на всех серверах Indeed AM и Indeed Admin Console, после внесения изменений требуется выполнить перезагрузку машин. 

2. Если после внесения изменений из 1-го пункта ошибка не воспроизводится, то следующим шагом выполните изменение параметров MaxFieldLength и MaxRequestBytes до 32000(Dec). Best Practices по настройке Microsoft не указывает, но есть статья, в которой значение 32KB указывается как рекомендованное от Microsoft(строка из статьи: "Set-ItemProperty -Path $regPath -Name MaxRequestBytes -Value 32KB"). Если при 32KB проблема не воспроизводится, то эти значения можно считать безопасными. 

Дополнительно

Оригинальная статья от Microsoft по данной проблеме: ссылка

Мониторинг ошибки

Ошибку можно отслеживать в файлах "httperr.log" на серверах с AdminConsole. Файлы расположены в папке: C:\Windows\System32\LogFiles\HTTPERR. Проблемный запрос будет содержать код ошибки "400" и описание "RequestLength". 

Пример строки из лога с данной ошибкой:

2020-12-08 12:59:01 192.168.20.15 52090 192.168.20.3 443 HTTP/1.1 GET /iidemc/User?userId=AD_c4d757e0-5005-4d3f-bf0f-39b033ac45eb 400 - RequestLength -

Файл настроек реестра

К статье прикреплен файл настроек реестра с максимальными значениями. 



Вложения 
 
 RegSetup MaxValue.zip (0.30 кБ)
(0 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: