Как протестировать HTTP-клиента с использованием NTLM-аутентификации? - PullRequest
5 голосов
/ 06 октября 2010

У меня есть код, действующий как HTTP-клиент, который поддерживает базовую аутентификацию, а также аутентификацию NTLM.Я легко могу проверить, что базовая аутентификация работает, требуя имя пользователя / пароль для доступа к файлу в .htaccess на сервере Apache.Но как я могу проверить NTLM-аутентификацию, если не считать установки IIS?Есть ли случайно какие-либо общедоступные HTTP-серверы, которые принимают аутентификацию NTLM?

Ответы [ 2 ]

3 голосов
/ 06 октября 2010

Как вы, вероятно, уже поняли, поскольку NTLM является проприетарным протоколом аутентификации (который не имеет официальной общедоступной документации, предоставленной Microsoft), вам придется либо провести тестирование на реальном сервере IIS, работающем в Windows,или вы можете попытаться смоделировать схему аутентификации, используя сведения, полученные из документации, такой как:

Схема аутентификации NTLM для HTTP

Вы выиграли 'В Интернете вы не найдете множество общедоступных HTTP-серверов (если они есть), с которыми вы сможете протестировать.Проверка подлинности NTLM, как правило, развертывается для корпоративного использования, например проверки подлинности в Active Directory, и чаще всего она закрывается за корпоративными VPN.

Я бы откусил пулю и запустил экземпляр Windows (Microsoft позволит вам скачать множествооднодневные испытания Windows 2008 и т. д.) на виртуальной машине и проверка на это.

1 голос
/ 13 января 2018

Я искал тот же вопрос («как настроить фиктивный прокси-сервер ntlm») и нашел это. Итак, вот мое решение о том, как настроить переадресацию NTLM-аутентификации для прокси-сервера без использования IIS-сервера от Microsoft. Вместо этого мы будем использовать Apache httpd.exe

  1. Скачать Apache HTTP сервер Apache 2.4.29. Я использовал бинарники для Windows 32bit (VC14) версии от ApacheHaus
  2. Загрузите соответствующий модуль Mod Auth NTLM для, в моем случае mod_authn_ntml-1.0.8-2.4.x-x86-vc14.zip
  3. Установите сервер и модуль и настройте все так, чтобы сервер запускался, и вы просматривали веб-страницу по умолчанию при переходе на локальный хост
  4. Теперь снова отредактируйте файл конфигурации 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>
  1. Чтобы захватить локальный петлевой трафик и отладить происходящее, вам необходимо установить Wireshark 2.4.4, а затем специальный драйвер npcap-0.97.exe loopback-capture. При этом вы можете прослушивать трафик между вашим браузером и локальным веб-сервером

    1. Если вы хотите использовать проверку подлинности NTLM для прокси-сервера, вам нужно будет следовать совету со страницы mod_ntlmn_auth GitHub и установить флаг DisableLoopbackCheck в реестре (см. https://support.microsoft.com/en-us/kb/896861), в противном случае все локальные запросы аутентификации будут молча терпеть неудачу.

    2. Настройте браузер на использование локального IP-адреса в качестве прокси-сервера. Если все работает, браузер отправит ваши учетные данные в фоновом режиме.

    3. Чтобы увидеть, что происходит, теперь вы можете проверить свои журналы Wireshark, а также Apache logs / access.log показывает вам домен \ пользователя, который использовался для аутентификации.

Надеюсь, что это поможет кому-то там протестировать свои прокси-скрипты, потому что многие прокси-программы, с которыми я сталкиваюсь, не могут правильно обрабатывать прокси-серверы NTLM, что важно в бизнес-среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...