[7] [[誰何]]や [[credentials]] における[[引数]]は [DFN[[CODE(ABNF)[[[auth-param]]]]]] と呼ばれています。 ;; [8] ただし [[ABNF]] 構文上 [CODE(HTTP)@en[[[realm]]]] [[引数]]は [CODE(ABNF)@en[[[auth-param]]]] に含まれないことになっています。 * 構文 [FIG[ [FIGCAPTION[ [2] [[RFC 1945]] / [[RFC 2068]] における [CODE(ABNF)[[[challenge]]]] の構文 ]FIGCAPTION] [PRE(ABNF code)[ challenge = auth-scheme 1*SP realm *( "," auth-param ) auth-param = token "=" quoted-string ]PRE] ]FIG] ** 区切子 [6] [[MIME]] や [[HTTP]] の他の[[ヘッダー]]では[[引数]]は [CODE(char)[[[;]]]] で区切るのが普通ですが、 [[誰何]]や [[credentials]] では [CODE(char)[[[,]]]] で区切ります。 ;; [9] そのため [CODE(HTTP)@en[[[WWW-Authenticate:]]]] や [CODE(HTTP)@en[[[Proxy-Authenticate:]]]] や [CODE(HTTP)@en[[[Authorization:]]]] は[[HTTPヘッダーの連結]]の処理の際に注意が必要です。 ** 名前 [13] [[引数]]の名前は[[ASCII大文字・小文字不区別]]です。 ;; [14] [[RFC 1945]] / [[RFC 2068]] は [CODE(HTTP)@en[[[realm]]]] [[属性]]以外について[[大文字]]と[[小文字]]の解釈を明記していません。 [15] 同じ名前の[[引数]]を複数回使うことは認められていません。 ;; [16] [[RFC 1945]] / [[RFC 2068]] 仕様上はこれが明記されていません。 ** 値 ;; [22] [[RFC 1945]] と [[RFC 2068]] の定義では必ず [CODE(ABNF)@en[[[quoted-string]]]] とすることになっていましたが、 [[RFC 2069]] ではそうなっていない構文が定義されており、 矛盾していました。 * 順序 [12] 引数の順序は特に規定されていないようです。 ;; [11] [[RFC 1945]]/[[RFC 2068]] の定義では、 [[誰何]]においては [CODE(HTTP)@en[[[realm]]]] [[引数]]は唯一、 [CODE(HTTP)@en[[[auth-scheme]]]] に関わらず必須で構文的にも最初に定義されている特殊な[[引数]]でした。 ただ最初の[[引数]]でなければならないのが [[ABNF]] 構文の定義上のものなのか、 現実にそうでなければならない要件なのかははっきりしませんでした。 [20] [CODE(HTTP)@en[[[auth-param]]]] の順序に意味はありません。 ;; [21] [[RFC 1945]] / [[RFC 2068]] 仕様上はこれが明記されていません。 * 文脈 [17] [[誰何]]では、 [CODE(HTTP)@en[[[auth-scheme]]]] に続けて1つ以上指定し、 必要な[[認証]]についての追加情報を表します。 [18] [[credentials]] では、[[Basic認証]]以外の場合に [CODE(HTTP)@en[[[auth-scheme]]]] に続けて0個以上指定し、[[認証]]に必要な情報を表します。 * 引数の一覧 - [27] [CODE(HTTP)@en[[[algorithm]]]] ([[Digest]] [[誰何]], [[credentials]]) - [31] [CODE(HTTP)@en[[[digest]]]] ([[Digest]] [[credentials]]) - [23] [CODE(HTTP)@en[[[domain]]]] ([[Digest]] [[誰何]]) - [24] [CODE(HTTP)@en[[[nonce]]]] ([[Digest]] [[誰何]]) - [25] [CODE(HTTP)@en[[[opaque]]]] ([[Digest]] [[誰何]], [[credentials]]) - [30] [CODE(HTTP)@en[[[response]]]] ([[Digest]] [[credentials]]) - [26] [CODE(HTTP)@en[[[stale]]]] ([[Digest]] [[誰何]]) - [10] [CODE(HTTP)@en[[[realm]]]] ([[誰何]]) - [29] [CODE(HTTP)@en[[[url]]]] ([[Digest]] [[credentials]]) - [28] [CODE(HTTP)@en[[[username]]]] ([[Digest]] [[credentials]]) * 歴史 ** RFC [REFS[ - [1] [CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) - [19] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) ]REFS]