[30] [DFN[[CODE(HTTP)@en[[[Authentication-Info:]]]]]] は[[起源サーバー]]の、
[DFN[[CODE(HTTP)@en[[[Proxy-Authentication-Info:]]]]]] は[[プロキシ]]の
[[HTTP認証]]に関する情報を[[サーバー]]から[[クライアント]]へと伝送するための
[[HTTPヘッダー]]です。

* 仕様書

[REFS[
- [15] '''[CITE@en[RFC 7615 - HTTP Authentication-Info and Proxy-Authentication-Info Response Header Fields]] ([TIME[2015-10-01 10:01:32 +09:00]] 版) <https://tools.ietf.org/html/rfc7615>'''
- [11] [CITE@en[RFC 4976 - Relay Extensions for the Message Sessions Relay Protocol (MSRP)]] ([TIME[2014-10-18 23:44:47 +09:00]] 版) <https://tools.ietf.org/html/rfc4976#section-4.5>
- [31] [CITE@en[RFC 7616 - HTTP Digest Access Authentication]] ([TIME[2015-11-10 07:05:08 +09:00]] 版) <https://tools.ietf.org/html/rfc7616#section-3.5>
- [35] [CITE@en[RFC 7616 - HTTP Digest Access Authentication]] ([TIME[2015-11-10 07:05:08 +09:00]] 版) <https://tools.ietf.org/html/rfc7616#section-3.6>
- [36] [CITE@en[RFC 7616 - HTTP Digest Access Authentication]] ([TIME[2015-11-10 07:05:08 +09:00]] 版) <https://tools.ietf.org/html/rfc7616#section-3.8>
- [40] [CITE@en[RFC 8120 - Mutual Authentication Protocol for HTTP]] ([TIME[2017-04-20 12:04:06 +09:00]]) <https://tools.ietf.org/html/rfc8120#section-3.1>
]REFS]

* 意味

[16] [[認証方式]]は、[[クライアント]]の[[認証]] [[credentials]]
を承認したら、情報伝達のために [CODE(HTTP)@en[[[Authentication-Info:]]]]
[[応答ヘッダー]]を使うことができます [SRC[>>15]]。

[25] [CODE(HTTP)@en[[[Proxy-Authentication-Info:]]]] [[ヘッダー]]は、
[CODE(HTTP)@en[[[Authentication-Info:]]]] [[ヘッダー]]と同様のものですが、
[[プロキシ]]の[[認証]]に用いられます [SRC[>>15, >>36]]。

[21] 本[[ヘッダー]]の意味は、[[要求]]の [CODE(HTTP)@en[[[Authorization:]]]]
[[ヘッダー]]または [CODE(HTTP)@en[[[Proxy-Authorization:]]]]
[[ヘッダー]]で示された[[認証方式]]により定義されます [SRC[>>15]]。

;; [22] 特に定義がない場合どう解釈するべきなのかは不明です。無視するのが適切そうではありますが。

* 構文

[17] 値は、 [CODE(HTTP)@en[[[auth-param]]]] の[[リスト]] ([CODE(HTTP)[#]])
です [SRC[>>15]]。

[FIG(railroad)[
= [CODE(ABNF)@en[[[auth-param]]]]
= *
== [[FWS]]
== [CODE(HTTP)@en[[[,]]]]
== [[FWS]]
== [CODE(HTTP)@en[[[auth-param]]]]
]FIG]

[24] 引数の値は[[字句]]と[[引用文字列]]の両方を送受信できなければなりません。
しかし[[後方互換性]]のため[[認証方式]]次第で送信者がどちらを使うべきか制限しても構いません。
[SRC[>>15]]

[41] [[RFC 8120]] は ([CODE[Mutual]] の場合のみ?) [[RFC 5987]] の拡張構文を用いることができるとしています
[SRC[>>40]]。
しかし [[RFC 7615]] は[[認証方式]]依存で拡張構文を使って良いと明示的に認めてはおらず、
既存の実装が [[RFC 8120]] の要求を満たせるのかどうかは謎です。

;; [CODE[auth-param]] も参照。

* 引数

[18] [[認証方式]]ごとに利用する[[引数]]を規定できます [SRC[>>15]]。

[FIG(middle list)[
- [7] [CODE(HTTP)@en[[[cnonce]]]] [SRC[>>5, >>31]]
- [3] [CODE(HTTP)@en[[[digest]]]] [SRC[>>1]]
- [2] [CODE(HTTP)@en[[[nextnonce]]]] [SRC[>>1, >>5, >>31]]
- [6] [CODE(HTTP)@en[[[nc]]]] [SRC[>>5, >>31]]
- [9] [CODE(HTTP)@en[[[rspauth]]]] [SRC[>>5, >>31]]
- [8] [CODE(HTTP)@en[[[qop]]]] [SRC[>>5, >>31]]
]FIG]

* 文脈

[19] [CODE(HTTP)@en[[[Authentication-Info:]]]] [[ヘッダー]]は、
[[要求メソッド]]や[[状態符号]]に関わらず、
任意の[[応答]]で使うことができます [SRC[>>15]]。

;; [20] [[HTTP認証]]を使わない場面でも使うことができるのかどうかは定かではありません。

[33] [[ダイジェスト認証]]では、[[サーバー]]は、[[認証]]に成功したら[[応答]]に[[ヘッダー]]を含めることができます
[SRC[>>31]]。

[10] [CODE(HTTP)@en[[[Authentication-Info:]]]] [[ヘッダー]]は、
[[認証方式]]が認める場合は [SRC[>>15]]、[[トレーラー部]]でも使えます [SRC[>>5, >>15]]。

[EG[
[38] [[SCRAM]] が認めています [SRC[>>37]]。
]EG]

[34] [[ダイジェスト認証]]では、使うことができます [SRC[>>31]]。

;; [26] [CODE(HTTP)@en[[[Proxy-Authentication-Info:]]]] について明記されていませんが、
同様と思われます。

* 処理

[23] [[応答]]を[[転送]]する[[プロキシ]]は、 [CODE(HTTP)@en[[[Authentication-Info:]]]]
[[ヘッダー]]を変更してはなりません [SRC[>>15, >>35]]。

[27] [CODE(HTTP)@en[[[Proxy-Authentication-Info:]]]] [[ヘッダー]]は[[外向き]]の次の[[クライアント]]に向けたもので、
[[転送]]しないのが普通です。しかし[[プロキシ]]が多段になっていて[[下流]]から
[[credentials]] を受け取って[[転送]]したような場合には、
[CODE(HTTP)@en[[[Proxy-Authentication-Info:]]]] [[ヘッダー]]が[[転送]]されることもあります。
[SRC[>>15]]

* 歴史

[REFS[
- [1] [CITE@en[RFC 2069 - An Extension to HTTP : Digest Access Authentication]] ([TIME[2012-02-26 10:05:21 +09:00]] 版) <http://tools.ietf.org/html/rfc2069#section-2.1.3>
- [14] [CITE@en[RFC 2069 - An Extension to HTTP : Digest Access Authentication]] ([TIME[2012-02-26 10:05:21 +09:00]] 版) <http://tools.ietf.org/html/rfc2069#section-2.5>
- [4] [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#section-3.2.3>
- [5] [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#section-3.2.3>
- [13] [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#section-3.6>
]REFS]

[12] [CITE[Session Initiation Protocol (SIP) Parameters]]
( ([TIME[2014-11-13 16:25:40 +09:00]] 版))
<http://www.iana.org/assignments/sip-parameters/sip-parameters.xhtml#sip-parameters-12>

[28] [[RFC 2617]] の改訂である [[RFC 7615]] は、
[[Digest認証]]以外への適用可能性を理由に [SRC[>>15]]、 [CODE(HTTP)@en[[[Authentication-Info:]]]]
と [CODE(HTTP)@en[[[Proxy-Authentication-Info:]]]] を独立した [[RFC]]
としています。

;; [29] それなら [[RFC 7235]] に入れておけばよかったように思いますが...

[32] [[ダイジェスト認証]]に関する規定は [[RFC 7616]] に移行しています。

[FIG(quote)[
[FIGCAPTION[
[37] [CITE@en[RFC 7804 - Salted Challenge Response HTTP Authentication Mechanism]]
([TIME[2016-04-01 08:53:49 +09:00]] 版)
<https://tools.ietf.org/html/rfc7804#section-6>
]FIGCAPTION]

> When used with SCRAM, the Authentication-Info header field is allowed
>    in the trailer of an HTTP message transferred via chunked transfer-
>    coding.
> 

]FIG]

[39] [CITE@en[RFC 8120 - Mutual Authentication Protocol for HTTP]]
([TIME[2017-04-20 12:04:06 +09:00]])
<https://tools.ietf.org/html/rfc8120#section-14>

[42] [CITE@en[Issues · httpwg/http-extensions]]
([TIME[2017-04-24 21:14:28 +09:00]])
<https://github.com/httpwg/http-extensions/issues?utf8=%E2%9C%93&q=label%3Aauth-info>