[10] [DFN[[CODE(HTTP)@en[[[Proxy-Authorization:]]]]]] [[ヘッダー]]は、
[[クライアント]]が[[串]]における[[認証]]情報 ([[利用者名]]や[[合言葉]]など)
を指定するものです。

* 仕様書

[REFS[
- [1] '''[CITE@en[RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication]] ([TIME[2014-09-11 10:01:28 +09:00]] 版) <https://tools.ietf.org/html/rfc7235#section-4.4>'''
- [9] [CITE@en[RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication]] ([TIME[2014-09-11 10:01:28 +09:00]] 版) <https://tools.ietf.org/html/rfc7235#section-2.1>
- [13] [CITE@en[RFC 3261 - SIP: Session Initiation Protocol]] ([TIME[2014-08-15 14:48:03 +09:00]] 版) <http://tools.ietf.org/html/rfc3261#section-20.28>
- [12] [CITE@en[RFC 3261 - SIP: Session Initiation Protocol]] ([TIME[2014-08-15 14:48:03 +09:00]] 版) <http://tools.ietf.org/html/rfc3261#section-22.3>
]REFS]

* 意味

[4] [CODE(HTTP)@en[[[Proxy-Authorization:]]]] [[ヘッダー]]は、
[[認証]]が必要な[[串]]に対して[[クライアント]]が自身 (や[[利用者]]) を識別するためのものです。
値は[[串]]と[[要求]]される[[資源]]の [CODE(HTTP)@en[[[realm]]]]
の一方または両方に関する[[クライアント]]の[[認証]]情報を含む [[credentials]]
です。 [SRC[>>1]]

;; [11] [[起源鯖]]における[[HTTP認証]]のための [CODE(HTTP)@en[[[Authorization:]]]]
[[ヘッダー]]に相当するものです。

* 構文

[5] 値は [[credentials]] です [SRC[>>1]]。

* 文脈

[14] [[クライアント]]が、[[プロキシ]]に送信する[[要求]]に含めることができます。

[15] [[HTTP接続]]が[[素のHTTP]]の場合に[[平文]]のまま送られることに注意が必要です。
例えば[[プロキシ]]への接続が[[素のHTTP]]で[[プロキシ認証]]が[[基本認証]]だと、
[[利用者名]]と[[合言葉]]がそのまま[[平文]]で送信されてしまいます。
([CODE(URI)@en[https:]] [[URL]] への接続であっても[[プロキシ認証]]は[[平文]]のままです。)
これを防ぐには、[[プロキシ]]への接続に [[HTTPS]] を使わなければなりません。

* 処理

[6] [CODE(HTTP)@en[[[Proxy-Authorization:]]]] [[ヘッダー]]は、
[[内向き]]で次の最初の [CODE(HTTP)@en[[[Proxy-Authenticate:]]]] 
[[ヘッダー]]によって[[認証]]を求めていた[[串]]にのみ適用されます。 [SRC[>>1]]

[7] [[串]]は、複数協調して[[認証]]する仕組みになっている場合には、
[[credentials]] を次の[[串]]に中継しても構いません。 [SRC[>>1]]

[8] それ以外の場合には、[[認証]]に成功したら [CODE(HTTP)@en[[[Proxy-Authenticate:]]]]
[[ヘッダー]]を削除して[[転送]]します。

[51] [[串]]は [CODE(HTTP)@en[[[Proxy-Authorization:]]]] で指定された [[credentials]]
を受け付けない時や指定されていない時は [CODE(HTTP)@en[[[407]]]] [[応答]]を返す[['''べき''']]です。 [SRC[>>9, >>50]]

[HISTORY[
[47] [[RFC 2616]] まではこの[[ヘッダー]]は [[hop-by-hop header]] [SRC[>>46]]
と分類されていましたが、 [[RFC 723x]] ではこの分類は無くなっています。
]HISTORY]

;; [17] [CODE[Proxy-Authorization:]] が誰に対するものであるかを識別したり、
それ以外の相手から秘匿したりする仕組みはありません。
[[クライアント]]は[[プロキシ]]が使われない時に誤って送信しないように注意しないといけませんし、
[[プロキシ]]の設定を変更した後に[[再読込]]した時前の[[プロキシ認証]]を再利用するなど、
異なる[[プロキシ]]のための認証情報を送信してしまわないようにも注意しなければなりません。
また[[プロキシ]]は、認証情報が含まれたまま[[要求]]を[[上流]]に[[転送]]したりすることがないように注意しなければなりません。

* 関連

[16] 対となる [CODE[Proxy-Authenticate:]] も参照。

* 歴史

** RFC 第2世代

[REFS[
- [44] '''[CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) <http://tools.ietf.org/html/rfc2068#section-14.34>'''
]REFS]

** RFC 第3世代

[REFS[
- [46] [CITE@en[RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-01-09 20:55:20 +09:00]] 版) <http://tools.ietf.org/html/rfc2616#section-13.5.1>
- [48] '''[CITE@en[RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-01-09 20:55:20 +09:00]] 版) <http://tools.ietf.org/html/rfc2616#section-14.34>'''
- [50] [CITE@en[RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication]] ([TIME[2012-01-09 21:04:30 +09:00]] 版) <http://tools.ietf.org/html/rfc2617#page-4>
]REFS]

[FIG(quote)[
[FIGCAPTION[
[2] RFC 2068・2616 (HTTP/1.1) 14.34 Proxy-Authorization
]FIGCAPTION]

> The Proxy-Authorization request-header field allows the client to
identify itself (or its user) to a proxy which requires
authentication. The Proxy-Authorization field value consists of
credentials containing the authentication information of the user
agent for the proxy and/or realm of the resource being requested.

[CODE(HTTP)[Proxy-Authorization]] [[要求頭欄]]は、
[[クライアント]]が自身 (あるいはその[[利用者]]) を[[認証]]が必要な[[串]]に識別させることを可能とします。
[CODE(HTTP)[Proxy-Autorization]] 欄値は、
その串に対する[[利用者エージェント]]の認証情報[[及び/又は]]要求している[[資源]]の[[部門]] ([[realm]])
を含む[[証明書]] ([CODE(ABNF)[[[credentials]]]]) で構成します。

>
- Proxy-Authorization     = "Proxy-Authorization" ":" credentials

> The HTTP access authentication process is described in [DEL[section 11]] [INS["HTTP Authentication: Basic and Digest Access Authentication" [43] ]].
Unlike Authorization, the Proxy-Authorization header field applies
only to the next outbound proxy that demanded authentication using
the Proxy-Authenticate field. When multiple proxies are used in a chain,
the  Proxy-Authorization header field is consumed by the first outbound
proxy that was expecting to receive credentials. A proxy MAY relay
the credentials from the client request to the next proxy if that is
the mechanism by which the proxies cooperatively authenticate a given request.

HTTP 接続認証処理は [[RFC 2617]] で説明しています。 [CODE(HTTP)[[[Authorization]]]]
とは違って、 [CODE(HTTP)[Proxy-Authorization]] 頭欄は
[CODE(HTTP)[[[Proxy-Authenticate]]]] 欄を使って認証を要求した[[下り]]の次の串にのみ適用します。
複数の串が連鎖して使われているときは、証明書を受信することを予期していた最初の下りの串が
[CODE(HTTP)[Proxy-Authorization]] 頭欄を消費します。
串は、ある要求を串間で協力して認証する機構である場合には次の串にクライアント要求からの証明書を中継しても'''構いません'''。
]FIG]

** RFC 第4世代

[REFS[
- [3] '''[CITE@en[RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication]] ([TIME[2014-09-11 10:01:28 +09:00]] 版) <https://tools.ietf.org/html/rfc7235#section-4.4>'''
]REFS]