Как включить проверку подлинности Windows через обратный прокси?
Извините, если это дубликат, поскольку я 9X_user-authentication не являюсь экспертом в области безопасности 9X_ntlm и сетей, я, возможно, пропустил правильный 9X_user-authentication жаргон при поиске информации.
Я работаю над 9X_user-authentication приложением для перехвата и изменения HTTP-запросов 9X_login и ответов между веб-браузером и веб-сервером 9X_iis (справочную информацию см. в how to intercept and modify HTTP responses on server side?). Я решил 9X_authenticate реализовать обратный прокси-сервер в ASP.Net, который 9X_client-authentication перенаправляет клиентские запросы на внутренний 9X_login HTTP-сервер, переводит ссылки и заголовки 9X_login из ответа на правильно «проксифицированный» URL-адрес 9X_client-authentication и отправляет ответ клиенту после извлечения 9X_logon соответствующей информации. из ответа.
Он работает должным образом, за исключением части аутентификации: веб-сервер 9X_ntlm по умолчанию использует аутентификацию NTLM, и 9X_ntlm простая пересылка запросов и ответов через 9X_authenticate обратный прокси-сервер не позволяет аутентифицировать 9X_authentication пользователя на удаленное приложение. Обратный 9X_reverse-proxy прокси-сервер и веб-приложение находятся 9X_logon на одном физическом компьютере и выполняются 9X_authentication на одном сервере IIS (Windows Server 2008 9X_authenticate / IIS 7, если это имеет значение). Я безуспешно 9X_iis пытался как включить, так и отключить аутентификацию 9X_auth в приложении обратного прокси.
Я искал информацию 9X_ntlm об этом, и, похоже, это связано с "проблемой 9X_logon двойного прыжка", которую я не понимаю. Мой 9X_login вопрос: есть ли способ аутентифицировать 9X_iis пользователя в удаленном приложении через 9X_authentication обратный прокси-сервер с использованием 9X_iis NTLM? Если их нет, могу ли я использовать 9X_client-authentication альтернативные методы аутентификации?
Даже 9X_ntlm если у вас нет решения моей проблемы, было 9X_auth бы здорово просто указать мне на соответствующую 9X_authentication информацию об этом, чтобы помочь мне выбраться 9X_user-authentication из путаницы!
Ответ #1
Ответ на вопрос: Как включить проверку подлинности Windows через обратный прокси?
Я обнаружил, в чем проблема (и это NTLM): для 9X_ntlm того, чтобы браузер запрашивал у пользователя 9X_authenticate его учетные данные, ответ должен иметь код 9X_auth состояния 401. Мой обратный прокси-сервер 9X_client-authentication пересылал ответ браузеру, поэтому IIS добавлял 9X_logon стандартный HTML-код, чтобы объяснить, что 9X_client-authentication запрошенная страница недоступна, что не 9X_login позволяло браузеру запрашивать учетные данные. Проблема 9X_user-authentication была решена путем удаления содержимого ответа 9X_user-authentication при коде статуса 401.
При всем уважении к 9X_logon тому, кто ответил, что несколько лет назад, я 9X_ntlm должен признать, что это явная ложь. Проблема 9X_client-authentication была действительно решена ПОСЛЕ удаления содержимого 9X_client-authentication ответа, когда код состояния - 401, но это 9X_user-authentication не имело никакого отношения к исходной проблеме. По 9X_client-authentication правде говоря, проверка подлинности Windows 9X_authentication была сделана для проверки подлинности людей 9X_authenticate в локальных сетях Windows, где прокси-сервер 9X_auth отсутствует или даже не нужен. Основная 9X_ntlm проблема с аутентификацией NTLM заключается 9X_login в том, что этот протокол аутентифицирует 9X_login не сеанс HTTP, а базовое TCP-соединение, и, насколько 9X_client-authentication мне известно, нет способа получить к нему 9X_logon доступ из кода asp. Каждый прокси-сервер, который 9X_logon я пробовал, нарушал аутентификацию NTLM. Аутентификация 9X_reverse-proxy Windows удобна для пользователя, потому 9X_auth что ему никогда не нужно будет вводить ваш 9X_authenticate пароль для любого приложения, которое может 9X_client-authentication находиться в вашей интрасети, что пугает 9X_reverse-proxy охранника, потому что есть автоматический 9X_login вход без даже запроса, если домен сайта 9X_client-authentication доверяет IE, шокирующий администратора сети, потому 9X_auth что он превращает прикладной, транспортный 9X_logon и сетевой уровень в некий "клубок окон" вместо 9X_authentication простого HTTP-трафика.
Ответ #2
Ответ на вопрос: Как включить проверку подлинности Windows через обратный прокси?
NTLM не будет работать, если пакеты TCP 9X_iis не пересылаются точно так, как их получил 9X_client-authentication обратный прокси. Вот почему многие обратные 9X_iis прокси не работают с аутентификацией NTLM. (например, nginx)> Они 9X_client-authentication правильно пересылают HTTP-запросы, но не 9X_authentication TCP-пакеты.
Nginx может работать с аутентификацией 9X_user-authentication NTLM. Необходимо включить поддержку активности, которая 9X_iis доступна только через http_upstream_module. Дополнительно 9X_reverse-proxy в блоке местоположения вам необходимо указать, что 9X_authenticate вы будете использовать HTTP / 1.1 и что 9X_reverse-proxy поле заголовка «Соединение» должно быть 9X_user-authentication очищено для каждого проксируемого запроса. Конфигурация 9X_login Nginx должна выглядеть примерно так:
upstream http_backend { server 1.1.1.1:80; keepalive 16; } server { ... location / { proxy_pass http://http_backend/; proxy_http_version 1.1; proxy_set_header Connection ""; ... } }
Я долгое 9X_iis время чесал в затылке эту проблему, но все 9X_user-authentication вышесказанное мне подходит. Обратите внимание, что 9X_authentication если вам нужно проксировать HTTPS-трафик, считается 9X_user-authentication необходимым отдельный восходящий блок. Чтобы 9X_ntlm уточнить немного больше, "keepalive 16;" указывает 9X_client-authentication количество одновременных подключений к вышестоящему 9X_reverse-proxy прокси-серверу. Отрегулируйте количество 9X_ntlm в соответствии с ожидаемым количеством одновременных 9X_user-authentication посетителей на сайте.
Ответ #3
Ответ на вопрос: Как включить проверку подлинности Windows через обратный прокси?
Хотя это старый пост, я просто хочу сообщить, что 9X_authenticate у меня он неплохо работает с обратным прокси-сервером 9X_authenticate Apache2.2 и параметром keepalive = on. Очевидно, это 9X_logon сохраняет соединение между прокси-сервером 9X_authenticate и узлом SharePoint открытым и «закрепленным» на 9X_authentication клиентском <> прокси-соединении. Я точно 9X_logon не знаю механизмов, лежащих в основе этого, но 9X_client-authentication он работает довольно хорошо.
Но: Иногда мои 9X_iis пользователи сталкиваются с проблемой, что 9X_auth они вошли в систему как другой пользователь. Так 9X_login что, похоже, во время сессий происходит 9X_user-authentication некоторая путаница. Придется провести дополнительное 9X_iis тестирование.
Решение для всего (если у вас 9X_auth есть действующий подписанный сертификат 9X_login SSL): переключите IIS на базовую аутентификацию. Это 9X_auth работает абсолютно нормально, и даже Windows 9X_auth (то есть Office с подключением к SharePoint, все 9X_login процессы на основе WebClient и т. Д.) Вообще 9X_iis не будет жаловаться. Но они будут, когда 9X_reverse-proxy вы просто используете http без SSL / TLS, а 9X_iis также с самозаверяющими сертификатами.
Ответ #4
Ответ на вопрос: Как включить проверку подлинности Windows через обратный прокси?
Я подтверждаю, что он работает с keep-alive 9X_client-authentication = on на apache2.2
Я исследовал фреймы с помощью 9X_authentication Wireshark и знаю, почему это не работает. NTLM 9X_client-authentication не будет работать, если пакеты TCP не пересылаются 9X_reverse-proxy точно так, как их получил обратный прокси. Вот 9X_iis почему многие обратные прокси, такие как 9X_auth nginx, не работают с аутентификацией NTLM. Обратные 9X_authenticate прокси-серверы правильно пересылают HTTP-запросы, но 9X_client-authentication не TCP-пакеты.
NTLM требует обратного прокси 9X_authenticate TCP.
-
2
-
5
-
6
-
2
-
3
-
4
-
2
-
2
-
3
-
7
-
4
-
2
-
2
-
4
-
4
-
12
-
2
-
2
-
2
-
3
-
7
-
1
-
3
-
2
-
1
-
1
-
4
-
4
-
3
-
2
-
4
-
20
-
2
-
3
-
2
-
2
-
6
-
4
-
3
-
8
-
4
-
1
-
2
-
4
-
1
-
3
-
1
-
3
-
2
-
1