Anomalie beim einmaligen Anmelden bei Internet Explorer 11 / Outlook 2013: Die Autorisierung: Header werden weiterhin gesendet

934
Zsolti Vagyok

Ich habe IE 11 und Outlook 2013 auf der Clientseite. Auf der Serverseite gibt es centos7, apache 2.4 mit auth_ntlm_winbind_module und winbindd. Die Server-URI ( http://server.ihredomain.com ) wird unter "Lokale Sites" in den Explorer-Optionen / Sicherheit hinzugefügt.

Apache ist für die Verwendung von / ask-Authentifizierung für einen einzelnen URI (/sso.php) mit einer .htaccess-Datei konfiguriert:

<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> 

Das Problem ist, dass, wenn IE oder Outlook für die Verwendung von SSO konfiguriert sind, diese gelegentlich und nach dem Zufallsprinzip (basierend auf meiner Beobachtung im Verhältnis 1: 10-20) die ntlm-Berechtigungsdaten mit http-Anforderungen nicht nur an /sso.php, sondern eher an auch andere URIs.

Die Ausgabe von ngrep für eine problematische http-Abfrage:

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] 

Das Problem ist, dass sie die POST-Parameter nicht mit der http-Anforderung senden, wenn sie dies tun, und die Website-Skripts geben Fehlermeldungen zurück. Wenn Sie es jedoch sofort erneut versuchen, scheint es richtig zu funktionieren:

Kein 'Authorization:' - Header und korrekte POST-Daten, die an den Webserver gesendet werden.

Eine gültige Post-Abfrage sollte wie folgt aussehen (Beachten Sie die Abwesenheit der Kopfzeile Authorization: und das Vorhandensein des Feldes '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= 

Die Frage ist also, wie Sie verhindern können, dass der IE 11 oder Outlook 2013 die ntlm-Berechtigungsnachweise alle 10-20 Sekunden an beliebige URIs sendet, in denen Apache eigentlich nicht danach fragt. Oder wie Sie IE oder Outlook dazu zwingen, die POST-Daten zu senden, auch wenn sie ntlm-Berechtigungsdaten an den Webserver senden?

Vielen Dank für Hinweise oder Hinweise.

0
Ich erinnere mich vage daran, dass HTTP-NTLM-Authentifizierung pro Verbindung ist (im Gegensatz zu allen anderen Mechanismen, die pro Anforderung sind) ... Warum verwenden Sie NTLM 2014 anstelle von [Kerberos] (http: //blogs.technet). com / b / authentication / archive / 2006/04/07 / ntlm-s-time-has-pass.aspx)? grawity vor 10 Jahren 0
Weil das gefundene Apache-Modul (auth_ntlm_winbind) das unterstützt (unter Linux). Wenn Sie sich einer besseren Lösung bewusst sind, bin ich offen für Vorschläge. Zsolti Vagyok vor 10 Jahren 0
Entweder [mod_auth_gssapi] (https://github.com/modauthgssapi/mod_auth_gssapi) aus dem FreeIPA-Projekt oder das ältere [mod_auth_kerb] (http://modauthkerb.sourceforge.net/) sollte dies unterstützen. grawity vor 10 Jahren 0

0 Antworten auf die Frage