* 仕様書 * 構文 ** 読点 [1] この欄は、読点で分離することで複数の誰何を併記できます。 ところが、他の同様の欄とは異なり、誰何自体が引数の分離のために読点を使ってしまっています。 [CODE(ABNF)[auth-scheme]] があるので構文上曖昧性はないのですが、 このために (欄名に依存しない) 汎用の構文解析器で複数の誰何を分離することができません。 おそらくこのような困った仕様になった原因は太古の HTTP では読点とセミコロンが曖昧に使われていたときの名残でしょう。 ** 文脈 [407] [CODE(HTTP)@en[[[WWW-Authenticate:]]]] 欄は [CODE(HTTP)@en[[[401]]]] [[応答]]に含められなければなりません [SRC[>>406]]。また [CODE(HTTP)@en[[[401]]]] [[応答]]は [CODE(HTTP)@en[[[WWW-Authenticate:]]]] 欄を含まなければなりません [SRC[>>408, >>409, >>411]]。 * 串とキャッシュの処理モデル [410] [[串]]は [CODE(HTTP)@en[[[WWW-Authenticate:]]]] 欄をいじってはなりません [SRC[>>409]]。 * 歴史 ** RFC [REFS[ - [406] '''[CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) ''' - [408] [CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) - [409] [CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) - [411] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) ]REFS] [FIG[ [FIGCAPTION[ [403] RFC 1945 (HTTP/1.0) 10.16; RFC 2068 (HTTP/1.1) 14.46; RFC 2616 (HTTP/1.1) 14.47 WWW-Authenticate ]FIGCAPTION] > The WWW-Authenticate response-header field [DEL[must]] [INS[MUST]] be included in 401 ([DEL[unauthorized]] [INS[Unauthorized]]) response messages. The field value consists of at least one challenge that indicates the authentication scheme(s) and parameters applicable to the Request-URI. [CODE(HTTP)[WWW-Authenticate]] [[応答頭欄]]は、 [CODE(HTTP)[[[401]]]] (未認証) 応答メッセージに含められなければ'''なりません'''。 欄値は、最低一つの[[誰何]]で構成します。 誰何は、その [CODE(ABNF)[[[Request-URI]]]] に適用可能な認証方式および引数を示します。 > -WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge > The HTTP access authentication process is described in [DEL[section 11]] [INS[[INS[{2616}]] "HTTP Authentication: Basic and Digest Access Authentication" [43] ]]. User agents [DEL[[DEL[must]] [INS[MUST]]]] [INS[are advised to]] take special care in parsing the WWW-Authenticate field value [DEL[if it]] [INS[[INS[{2616}]] as it might]] contain[DEL[s [INS[{1945,2068}]]]] more than one challenge, or if more than one WWW-Authenticate header field is provided, [DEL[since the contents of a challenge may itself]] [INS[[INS[{2616}]] the contents of a challenge itself can]] contain a comma-separated list of authentication parameters. HTTP 接続認証処理は [[RFC2617]] で説明されています。 [[利用者エージェント]]は [CODE(HTTP)[WWW-Authenticate]] 欄値を構文解析するに当たって特別の注意を払うように助言しておきます。 欄値は複数の誰何を含むかもしれませんし、 複数の [CODE(HTTP)[WWW-Authenticate]] 頭欄が提供されているなら、 誰何の内容自体が認証引数群の読点分離並びを含むかもしれません。 * 表記について [404] 注記のない変更点は、 RFC 1945→RFC 2068 のもの。 * License [[RFCのライセンス]] ]FIG] * 実装 [2] [CODE(HTTP)[realm]] にセミコロンが含まれると、 [WEAK[([CODE(ABNF)[[[quoted-string]]]] にしているのに)]] [[ClassicMozilla]] はセミコロン前でぶった切ってしまいます。 (そのくせ、引用開始の引用符はちゃんと省いて表示してくれる。) ([[NN2]], [[NC]] 4.01 で確認。) [[WinIE1]] ですらこんなことはありませんでした。 なんと、 Mosaic Netscape 0.9 は正しく処理します。 [402] [[フォーム]]の[[提出]]先が[[基本認証]]の時の動作が変なブラウザーがありますね。 [[Gecko]] とか [[WinIE]] とか [[WebKit]] とか。最初必ず認証なしで試して、 [CODE(HTTP)[[[401]]]] なら再試行するところ、なぜか再試行しようとして接続を試みたままだったり。 [[Firefox]] だと最初の1回目だけ変なことがあって次からはうまくいくみたいですが。 リンク先が違う[[ディレクトリ]]だったりとかも関係してるっぽ。 [[Safari]] と [[Chrome]] の間でもなんかちがうな。。。 * 関連 [405] [[起源鯖]]ではなく、途中の[[串]]について行う[[認証]]のための [CODE(HTTP)@en[[[Proxy-Authenticate:]]]] 欄もあります。