Аномалия единого входа в Internet Explorer 11 / Outlook 2013: отправка продолжается Авторизация: заголовки

826
Zsolti Vagyok

У меня IE 11 и Outlook 2013 на стороне клиента. На стороне сервера есть centos7, apache 2.4 с auth_ntlm_winbind_module и winbindd. URI сервера ( http://server.yourdomain.com ) добавляется к «Локальным сайтам» в меню «Параметры» / «Безопасность».

Apache настроен на использование / запрос аутентификации для одного URI (/sso.php) с файлом .htaccess:

<IfModule auth_ntlm_winbind_module> <FilesMatch "sso.php$"> AuthName "NTLM authentication" NTLMAuth on NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" NTLMBasicAuthoritative on AuthType NTLM require valid-user </FilesMatch> </IfModule> 

Проблема заключается в том, что когда IE или Outlook настроены на использование единого входа, они время от времени и случайным образом (основываясь на моем наблюдении в соотношении 1: 10-20) отправляют данные авторизации ntlm с http-запросами не только в /sso.php, а скорее в любые другие URI, а также.

Вывод ngrep для проблемного http-запроса:

T 1.2.3.4:49229 -> 1.2.3.5:80 [AP] POST /message.php HTTP/1.1..Accept: */*..Content-Type: app lication/x-www-form-urlencoded; charset=UTF-8..X-Roundcube -Request: undefined..X-Requested-With: XMLHttpRequest..Ref erer: search.php..Accept-Language: hu,en-US;q=0.7,en;q=0.3..Accept-Encoding: gzip, deflate..U ser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6 .2; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; Microsoft Outl ook 15.0.4420)..Host: SERVER..Content-Length: 0.. Connection: Keep-Alive..Cache-Control: no-cache..Cookie: s plitter2=421; PHPSESSID=38jo8vdmvvfotqhivffsocgif3..Author ization: NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAG A4AlAAAADw==.... # T 1.2.3.5:80 -> 1.2.3.4:49229 [AP] HTTP/1.1 200 OK..Date: Mon, 15 Sep 2014 08:52:50 GMT..Serv er: Apache/2.4.6 (CentOS) PHP/5.4.16..X-Powered-By: PHP/5. 4.16..Expires: Thu, 19 Nov 1981 08:52:00 GMT..Cache-Contro l: no-store, no-cache, must-revalidate, post-check=0, pre- check=0..Pragma: no-cache..Content-Length: 42..Keep-Alive: timeout=5, max=100..Connection: Keep-Alive..Content-Type: text/html; charset=UTF-8.....invalid id: # T 1.2.3.4:49229 -> 1.2.3.5:80 [A] 

Проблема в том, что когда они делают это, им не удается отправить параметры POST с запросом http, а сценарии веб-сайта возвращают сообщения об ошибках. Однако при повторной попытке сразу же кажется, что все работает правильно:

Нет заголовка «Авторизация:» и правильных данных POST, отправленных на веб-сервер.

Действительный почтовый запрос должен выглядеть следующим образом (обратите внимание на отсутствие заголовка Authorization: и наличие поля 'id'):

T 1.2.3.4:49229 -> 1.2.3.5:80 [AP] POST /message.php HTTP/1.1..Accept: */*..Content-Type: app lication/x-www-form-urlencoded; charset=UTF-8..X-Roundcube -Request: undefined..X-Requested-With: XMLHttpRequest..Ref erer: search.php..Accept-Language: hu,en-US;q=0.7,en;q=0.3..Accept-Encoding: gzip, deflate..U ser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6 .2; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; Microsoft Outl ook 15.0.4420)..Host: SZERVER..Content-Length: 15. .Connection: Keep-Alive..Cache-Control: no-cache..Cookie: splitter2=421; PHPSESSID=38jo8vdmvvfotqhivffsocgif3.... # T 1.2.3.4:49229 -> 1.2.3.5:80 [AP] id=4992&search= 

Таким образом, вопрос заключается в том, как запретить IE 11 или Outlook 2013 отправлять учетные данные авторизации ntlm на любые URI каждые 10-20 секунд, когда apache фактически не запрашивает это? Или как заставить IE или Outlook отправлять данные POST, даже если они отправляют данные авторизации ntlm на веб-сервер?

Спасибо за любые подсказки или подсказки.

0
Я смутно припоминаю, что HTTP NTLM-аутентификация для каждого соединения (в отличие от всех других механизмов для каждого запроса) ... Из любопытства, почему вы используете NTLM в 2014 году вместо [Kerberos] (http: //blogs.technet). ком / б / аутентификация / архив / 2006/04/07 / NTLM-s-время имеет-passed.aspx)? grawity 10 лет назад 0
Потому что найденный модуль apache (auth_ntlm_winbind) поддерживает это (в Linux). Если вам известно о лучшем решении, я открыт для предложений. Zsolti Vagyok 10 лет назад 0
[Mod_auth_gssapi] (https://github.com/modauthgssapi/mod_auth_gssapi) из проекта FreeIPA или более старый [mod_auth_kerb] (http://modauthkerb.sourceforge.net/) должен поддерживать его. grawity 10 лет назад 0

0 ответов на вопрос

Похожие вопросы