* 仕様書 [REFS[ - [15] '''[CITE@en[RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication]] ([TIME[2012-01-09 21:04:30 +09:00]] 版) ''' - [16] [CITE@en[RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication]] ([TIME[2012-01-09 21:04:30 +09:00]] 版) ]REFS] * 構文 [3] [[誰何]]は [CODE(ABNF)@en[[[auth-scheme]]]] と [CODE(ABNF)@en[[[auth-param]]]] で構成されます。 [4] 両者の間は1文字以上の [CODE(ABNF)[[[SP]]]] で分離します。 ;; [5] [CODE(ABNF)[[[LWS]]]] ではなく [CODE(ABNF)[[[SP]]]] とされています。 従って[[タブ]]や[[折り畳み]]はできません。 [FIG[ [FIGCAPTION[ [2] [[RFC 1945]] / [[RFC 2068]] における [CODE(ABNF)[[[challenge]]]] の構文 ]FIGCAPTION] [PRE(ABNF code)[ challenge = [[auth-scheme]] 1*[[SP]] [[realm]] *( "," [[auth-param]] ) ]PRE] ]FIG] * 引数 [7] [[誰何]]における[[引数]]は [CODE(ABNF)[[[auth-param]]]] と呼ばれています。 ;; [8] ただし [[ABNF]] 構文上 [CODE(HTTP)@en[[[realm]]]] は [CODE(ABNF)@en[[[auth-param]]]] に含まれないことになっています。 詳しくは [[auth-param]] の項を参照してください。 * 誰何の選択 [11] 1つの[[要求]]の [CODE(HTTP)@en[[[WWW-Authenticate:]]]] 欄には複数の[[誰何]]を含めることができます。 それぞれの[[誰何]]の [[auth-scheme]] は違っていても構いません。 [13] この時[[誰何]]の順は[[鯖]]が使って欲しい順序にするべきです。[[鯖]]はより「安全」 な方法を最初に持ってくるべきです。 [SRC[>>10]] [12] また[[利用者エージェント]]は提示された[[誰何]]のうち対応している最も「安全」な方法を選択し[['''なければなりません''']] [SRC[>>16]] ;; [14] [[RFC 2068]] では、[[利用者エージェント]]は、対応しているより最初のものを使うべき、 かつ最も安全な方法を選択するべき [SRC[>>10]]、と2つの矛盾する方針を同時に勧められていました。 [[RFC 2617]] では >>12 だけを要求しており、しかもおすすめではなく、要件になっています。 * 歴史 ** RFC [REFS[ - [1] [CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) - [9] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) - [10] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) ]REFS]