Ist es einem Zwischenproxy gestattet, während der Proxy-Authentifizierung Cookies hinzuzufügen?

7

Ich bin kürzlich auf eine bestimmte Security Appliance (BlueCoat) gestoßen, die erfordert, dass alle Verbindungen zum Internet über diese übertragen werden müssen (Hallo, Mann in der Mitte) und dementsprechend ein spezielles SSL-Zertifikat verwendet, um den gesamten Datenverkehr abzufangen.

Diese auf den normalen Betrieb von Git verhindert, obwohl die entsprechenden http.proxyund http.sslCAInfoEigenschaften wurden festgelegt , um sicherzustellen , dass die SSL - Verbindung selbst funktioniert.

Bei Verwendung der Umgebungsvariablen GIT_CURL_VERBOSE=1haben wir festgestellt, dass bei Verwendung git cloneein HTTP 407 (Proxy-Authentifizierung erforderlich) auftritt. Git erfüllt diese Authentifizierung ordnungsgemäß und am Ende gibt die Appliance ein HTTP 200 mit einem Cookie-Header zurück Set-Cookie.

Git stellt dann eine Verbindung zum Zielserver her, jedoch ohne das Cookie, was zu einem HTTP 401 führt.

Die Lösung hierfür besteht darin, die Git-Konfigurationsoption festzulegen http.saveCookies=true

Frage: Ist es nach den RFC-Standards tatsächlich zulässig, dass ein Zwischen-Proxy Cookies hinzufügt?

Anthony Rich stellte die gleiche Frage an die Mailingliste des http-Status, jedoch ohne Antwort. Er hat das in bemerkt

RFC 2965 HTTP-Statusverwaltungsmechanismus, 3.5 Zwischenspeichern der Proxy-Rolle: Proxies DÜRFEN KEINE eigenen Set-Cookie2 (Cookie) -Header in Proxy-Antworten (Anforderungen) einführen.

Der ersetzende RFC 6265 erwähnt dies jedoch überhaupt nicht mehr.

Patrick
quelle

Antworten:

4

HTTP-Cookies sind ein heißes Durcheinander. Es gibt keinen wirklichen Standard; Der RFC versucht lediglich zu dokumentieren, was die tatsächlichen Benutzeragenten tun.

In jedem Fall ist der RFC, den Sie wahrscheinlich lesen möchten, RFC 7235 , der angibt, dass Proxys einen Proxy-Authenticate-Header mit dem Status 407 senden sollen, um Authentifizierungsinformationen anzufordern, und Benutzeragenten, die dies erhalten, die Anforderung mit a wiederholen sollen Proxy-Authorization-Header mit den Authentifizierungsinformationen für den Proxy.

Eine Reihe von Challenge / Response-Methoden könnte verwendet werden, um diese Informationen bereitzustellen. Am weitesten verbreitet ist "Basic" ( RFC 7617 ), da so ziemlich alles, was HTTP spricht, es implementiert.

Die IANA unterhält eine Registrierung bekannter HTTP-Authentifizierungsschemata . In der Regel verwenden sie die zuvor genannten HTTP-Header oder werden als nicht konform eingestuft. Keiner verwendet Cookies zur Authentifizierung.

Ob ein Proxy Cookies hinzufügen oder ändern darf, kann ich nicht sagen. Die RFCs scheinen in diesem Punkt wirklich nicht sehr klar zu sein. Es ist sicherlich ein unerwartetes Verhalten, insbesondere bei der Authentifizierung. Und BlueCoat hat eine lange Geschichte von mittelmäßiger Qualität ...

Michael Hampton
quelle