
- Wir verwenden Squid als HTTP-Proxy (bei Bedarf kann ich seine Konfiguration ändern).
- Wir möchten auf eine Website zugreifen, die NTLM zur Authentifizierung verwendet
- Wenn wir über Squid auf die Website gehen, sehen wir eine leere Seite
- Wenn wir die Website über eine DSL-Box aufrufen, wird ein Authentifizierungs-Popup angezeigt (gewünschtes Ergebnis).
Ich weiß nicht viel über NTLM ... gestörte Vorstellungskraft ... beschissenes Protokoll ... grmbl grmbl :D :D :D
In diesem Thread heißt es, dass es nicht möglich ist:http://www.squid-cache.org/mail-archive/squid-users/200708/0578.html
Gibt es einen Guru, der eine Lösung oder einen Workaround anbieten kann?
Hier ist die Telnet-Ausgabe auf Port 80 für die gewünschte Website:
Trying 111.222.333.444...
Connected to www.extranet-example.com (111.222.333.444).
Escape character is '^]'.
GET /index.htm HTTP/1.1
host: www.extranet-example.com
HTTP/1.1 401 Unauthorized
Server: Microsoft-IIS/7.5
SPRequestGuid: 2764478a-b14a-4541-9110-27ebf4281e84
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.4762
Date: Mon, 25 Nov 2013 14:25:26 GMT
Content-Length:
0
Bonus: Wir verwenden 2 verkettete Proxy-Server (Squid-2.6 Rhel5)
Bearbeiten: Die Verwendung von NTLM zur Squid-Authentifizierung ist nicht das, was wir erreichen möchten.
Bearbeitung 2: Die Website, die wir erreichen möchten, liegt außerhalb unseres Unternehmens, außerhalb unseres Netzwerks. Tatsächlich ist es eine öffentliche Website mit einer öffentlichen IP. Wenn ich diese Website von der Proxy-Konfiguration ausschließe, funktioniert es nicht, da unsere Workstation weder eine Route zum Internet noch eine direkte Verbindung hat.
Antwort1
NTLM ist verbindungsorientiert und da es keine direkte Verbindung zwischen Ihnen und dem Webserver gibt, wenn Sie den Proxy verwenden, schlägt NTLM fehl. (Es gibt eine Verbindung zwischen Ihnen und dem Proxy und eine zweite Verbindung zwischen dem Proxy und der Website.)
Wenn Sie beispielsweise nicht auf Kerberos-Authentifizierung aktualisieren können, fügen Sie den Webserver am besten zur Proxy-Ausschlussliste in Ihrer Client-Konfiguration (PAC-Datei?) hinzu. Normalerweise werden interne Server im Unternehmensintranet (wo Sie NTLM-Authentifizierung erwarten würden) aus diesem Grund vom Proxy ausgeschlossen und Clients stellen eine direkte Verbindung her.
BEARBEITEN
Anscheinend gibt es in Squid eine Option für die NTLM-Passthrough-Authentifizierung:Anschluss-Pinning. Verfügbar ab Squid-Version 2.6 und höher und 3.1 und höher.
http_port ... connection-auth[=on|off]
https_port ... connection-auth[=on|off]
Antwort2
Auf Grundlage der bereitgestellten Informationen glaube ich nicht, dass Sie einen Workaround erstellen können, um NTLM über Squid über das Internet zu verwenden, ohne auf irgendeine Weise über den Tellerrand hinauszublicken.
Ein möglicher Vorschlag wäre die Verwendung von HAproxy (das TCP-Reverse-Proxying durchführt), um eine lokale URL in Ihrem Netzwerk zu erstellen, die Anfragen an die Site am anderen Ende weiterleitet. Wenn Sie zwei verschiedene Hops durchlaufen müssen (d. h. die beiden Maschinen, auf denen Squid läuft), müssten Sie zwei Instanzen einrichten.
Die Konfiguration würde etwa wie folgt aussehen:
listen localsite 0.0.0.0:80
mode tcp
balance roundrobin
option tcplog
server upstream1 1.2.3.4:80
Obwohl Sie eine separate Anwendung ausführen müssen, ist HAproxy völlig unkompliziert (Installation eines einzelnen Pakets, 10-zeilige Konfigurationsdatei, praktisch keine Konfiguration, keine Wartung).
Die andere Möglichkeit wäre, die Systemkonfiguration zu ändern, um eine Art SSO zu aktivieren und dann einen lokalen NTLM-Authentifikator zu verwenden, um die Sitzungen zum Upstream-System zu initiieren. Dies könnte Entwicklungs- und Systemänderungen erfordern.
Ich glaube allerdings nicht, dass ich NTLM jemals über das Internet verwendet gesehen habe, es wird im Allgemeinen in LANs verwendet. Wenn Sie die Situation näher erläutern, können wir vielleicht eine alternative Strategie vorschlagen.