Как протестировать HTTP-клиент с помощью аутентификации NTLM?
У меня есть некоторый код, действующий как HTTP-клиент, который поддерживает базовую аутентификацию, а также аутентификацию NTLM. Я могу легко проверить, что обычная аутентификация работает, требуя имя пользователя / пароль для доступа к файлу в .htaccess
на сервере Apache. Но как я могу проверить аутентификацию NTLM, не устанавливая IIS? Там случайно никаких публичных серверов HTTP, которые допускают проверку подлинности NTLM?
2 ответа:
Как вы, вероятно, уже поняли, поскольку NTLM-это проприетарный протокол аутентификации (который не имеет никакой официальной публичной документации, предоставляемой Microsoft), вам придется либо протестировать его на реальном сервере IIS, работающем под управлением Windows, либо попытаться имитировать схему аутентификации, используя сведения, почерпнутые из документации, например:
Вы не найдете много общедоступных HTTP-серверов (если любой)в интернете, который вы сможете протестировать. Аутентификация NTLM обычно развертывается для корпоративного использования, такого как аутентификация в Active Directory, и чаще всего блокируется за корпоративными VPN.
Я бы укусил пулю и запустил экземпляр Windows (Microsoft позволила вам загрузить множество 120-дневных проб Windows 2008 и т. д.) В виртуальной машине и протестировать против этого.
Я искал тот же вопрос ("Как настроить фиктивный сервер ntlm proxy") и нашел это. Итак, вот мое решение о том, как настроить пересылку NTLM-аутентификации для прокси-сервера, не используя сервер IIS от Microsoft. Вместо этого мы будем использовать Apache httpd.exe
- Скачать Apache HTTP server Apache 2.4.29. Я использовал двоичные файлы версии windows 32bit (VC14) от ApacheHaus
- загрузите соответствующий модуль Mod Auth NTLM Для, в моем случае mod_authn_ntml-1.0.8-2.4.x-x86-vc14.zip
- Установите сервер и модуль и настройте все так, чтобы сервер запустился, и вы увидите веб-страницу по умолчанию, когда вы перейдете к своему локальному хосту
Теперь отредактируйте conf / httpd.conf снова сконфигурируйте файл и внесите следующие изменения:
#Make sure to load at least the modules, and their dependencies: LoadModule headers_module modules/mod_headers.so LoadModule info_module modules/mod_info.so LoadModule ldap_module modules/mod_ldap.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule request_module modules/mod_request.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule ssl_module modules/mod_ssl.so LoadModule status_module modules/mod_status.so #add the new module LoadModule auth_ntlm_module modules/mod_authn_ntlm.so
Включите прокси-сервер. Имейте в виду, что вы можете открыть открытый прокси-сервер в интернете...
ProxyVia On ProxyRequests On <Proxy "*"> AuthName "Private location" AuthType SSPI NTLMAuth On NTLMAuthoritative On <RequireAll> <RequireAny> Require valid-user #require sspi-user EMEA\group_name </RequireAny> <RequireNone> Require user "ANONYMOUS LOGON" Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG" </RequireNone> </RequireAll> </Proxy>
Или, если вы просто хотите защитить только один каталог, вы можете скопируйте код из примера конфигурации mod_authn_ntml:
<Location /testDirectory > AuthName "Private location for testing NTLM authentication" AuthType SSPI NTLMAuth On NTLMAuthoritative On <RequireAll> <RequireAny> Require valid-user #require sspi-user EMEA\group_name </RequireAny> <RequireNone> Require user "ANONYMOUS LOGON" Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG" </RequireNone> </RequireAll> # use this to add the authenticated username to you header # so any backend system can fetch the current user # rewrite_module needs to be loaded then RewriteEngine On RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule . - [E=RU:%1] RequestHeader set X_ISRW_PROXY_AUTH_USER %{RU}e </Location>
Чтобы захватить локальный трафик loopback и отладить то, что происходит, вам нужно установить Wireshark 2.4.4, а затем специальный npcap-0.97.exe loopback-драйвер захвата. С его помощью вы можете отслеживать трафик между вашим браузером и вашим локальным веб-сервером
Если вы хотите использовать аутентификацию NTLM для прокси-сервера, вам нужно будет следовать совету на странице mod_ntlmn_auth GitHub и установить флаг DisableLoopbackCheck в реестре (см. https://support.microsoft.com/en-us/kb/896861 ), В противном случае все локальные запросы аутентификации будут автоматически завершаться ошибкой.
Настройте браузер так, чтобы он использовал ваш локальный IP-адрес в качестве прокси-сервера. Если все работает, браузер отправит ваши учетные данные в фоновом режиме.
Чтобы увидеть, что происходит, теперь вы можете проверить журналы Wireshark, а также журналы Apache / access.журнал показывает Вам домен\пользователя, который был используется для аутентификации.
Надеюсь, что это поможет кому-то протестировать свои прокси-скрипты, потому что многие прокси-программы, с которыми я сталкиваюсь, не могут правильно обрабатывать прокси NTLM, что важно в бизнес-среде.