web-dev-qa-db-ja.com

中間プロキシがプロキシ認証中にCookieを追加することは許可されますか?

最近、特定のセキュリティアプライアンス(BlueCoat)に遭遇しました。これには、インターネットへのall接続がそれを介してプロキシされる必要があるため(こんにちは、man-in-the-middle)、それに応じて使用します。すべてのトラフィックを傍受するための特別なSSL証明書。

これにより、SSL接続自体が機能するように適切なhttp.proxyおよびhttp.sslCAInfoプロパティが設定されていても、Gitの通常の操作が妨げられました。

環境変数GIT_CURL_VERBOSE=1を使用すると、git cloneを使用すると、HTTP 407(プロキシ認証が必要)が発生することがわかりました。 Gitはこの認証を適切に実行し、この最後に、アプライアンスはCookieヘッダーSet-Cookieを含むHTTP 200を返します。

Gitはターゲットサーバーに接続しますが、CookieをせずにHTTP 401に接続します。

これに対する解決策は、git構成オプションhttp.saveCookies=trueを設定することです

質問:中間プロキシがcookieを追加することは、RFC標準で実際に許可されていますか?

Anthony Rich http-stateメーリングリストに同じ質問をした だが、応答はなかった。彼はそのことに注意しました

RFC 2965 HTTP状態管理メカニズム、3.5キャッシングプロキシの役割:プロキシは、プロキシ応答(リクエスト)に独自のSet-Cookie2(Cookie)ヘッダーを導入してはならない(MUST NOT)。

ただし、 RFC 6265に取って代わる では、これについてはまったく触れられていません。

7
Patrick

HTTP Cookieは非常に厄介です。実際の基準はありません。 RFCは、その価値のために、実際のユーザーエージェントが何をしているのかを文書化しようとするだけです。

いずれの場合でも、おそらく読み取りたいRFCは RFC 7235 です。これは、プロキシが407ステータスのProxy-Authenticateヘッダーを送信して認証情報を要求することを指定し、これを受信するユーザーエージェントはプロキシの認証情報を含むProxy-Authorizationヘッダーでリクエストを再試行することになっています。

この情報を提供するために、いくつかのチャレンジ/レスポンスメソッドを使用できます。 HTTPを話すほとんどすべてがそれを実装しているため、最も広く使用されているのは「基本」( RFC 7617 )です。

IANAは 既知のHTTP認証スキームのレジストリ を維持します。一般的なルールとして、以前に指定されたHTTPヘッダーを使用するか、非準拠であると記載されています。認証にCookieを使用するものはありません。

プロキシがcookieを追加または変更することが許可されているかどうか、私には言えません。 RFCはこの点についてはあまり明確ではないようです。これは確かに予期しない動作です(特に認証の場合)。そしてBlueCoatは品質が平凡であるという長い歴史があります...

4
Michael Hampton