Назад | Перейти на главную страницу

Почему оспаривается только первый запрос к прокси-серверу с аутентификацией NTLM и как аутентифицируются последующие запросы через прокси?

Я пытаюсь разработать сетевой туннель, который может проходить через прокси-серверы с проверкой подлинности NTLM. В рамках этого я исследую, как работает NTLM auth. В моей тестовой установке прокси WinGate в одном окне Windows настроен на требование NTLM-аутентификации. Мой клиент Windows настроен на использование машины WinGate в качестве прокси. После перезапуска WinGate первая открываемая мной веб-страница требует аутентификации - я вижу обмен NTLM через Fiddler. Последующие запросы с того же ПК не требуют аутентификации. Я имею в виду любой запрос с ПК, а не только из того же браузера, например, открытие Firefox при первоначальной аутентификации в Chrome. Я захватил весь трафик с помощью Fiddler (а ранее также с помощью Wireshark) - я не вижу никаких доказательств того, что какой-либо токен или идентификация отправляются на прокси. Итак, как прокси узнает, что разрешить эти последующие запросы? Это ожидаемое поведение для NTLM auth?

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

Таким образом, прокси-сервер при аутентификации каждого соединения обрабатывает в 3 раза больше запросов, а также должен передавать этот трафик аутентификации через SSPI на контроллер домена, поэтому нагрузка на контроллер домена также намного выше. Затем WinGate должен получить объект из AD, поэтому нагрузка LDAP на AD DS также выше.

Эта нагрузка уменьшается за счет кеширования учетных данных. Это, конечно, основано на предположении, что на этом IP-адресе только 1 пользователь. Если это предположение неверно, WinGate имеет правила, отменяющие это поведение.

Я нашел ответ - прокси WinGate по умолчанию имеет нестандартное поведение - он кеширует учетные данные по IP-адресу клиента. Таким образом, как только NTLM аутентифицируется один раз, аутентифицируются все последующие запросы от ПК. Это можно изменить, создав правило учетных данных в WinGate и выбрав «Не разрешать использование учетных данных, установленных сеансом, другими сеансами».