[403] [[HTTP]] の[[状態符号]] [DFN[[CODE(HTTP)@en[[[401]]]]]] は、[[認証]]が必要であって、 [[HTTP要求]]に適当な認証情報が含まれていなかったことを表します。 * ヘッダー [410] [CODE(HTTP)@en[[[401]]]] [[応答]]は [CODE(HTTP)@en[[[WWW-Authenticate:]]]] 欄を含まなければなりません [SRC[>>408, >>411, >>412, >>415]]。 * 処理モデル [404] [[Webブラウザー]]をはじめとする[[対話的]]な [[HTTP]] [[利用者エージェント]]は、普通、 [[HTTP要求]]に対して [CODE(HTTP)@en[[[401]]]] [[応答]]が返されると、 [[利用者]]に[[名前]]と[[合言葉]]のような認証情報を問い合わせ、 それを含めて再度 [[HTTP要求]]を送信するようになっています。 [405] 入力された認証情報が不適当であった場合には再度 [CODE(HTTP)[[[401]]]] が返されますから、 [[Webブラウザー]]も再度[[利用者]]に入力を求め、以後これを繰り返します。 [[利用者]]が断念すると、 [CODE(HTTP)[[[401]]]] [[メッセージ]]の内容を[[レンダリング]]します。 [406] [[認証]]を通って [CODE(HTTP)[[[202]]]] などの成功を表す[[応答]]が返されると、 以後、[[HTTP]] [[URL]] が同じ[[階層]] ([[ディレクトリー]]) 以下の[[要求]]には[[利用者エージェント]]が自動的に同じ認証情報を付加するので、 [[鯖]]側での[[合言葉]]の変更などで [CODE(HTTP)[[[401]]]] が返されない限り、 [[利用者]]が再度認証情報を求められることはありません。 [407] 通常この認証情報の記憶は同一 [[Webブラウザー]]・[[セッション]]内に限られます。 一般的な [[Webブラウザー]]は認証情報を[[セッション]]を越えて保存しますが、 自動的には送信せず、必ず[[セッション]]の最初の1回は明示的に[[利用者]]に問い合わせる仕組みになっています。 * 実装 [402] [[Firefox]] は [CODE(HTTP)@en[[[POST]]]] 時や [[XHR]] で [CODE(HTTP)@en[[[401]]]] が返された時の扱いが一部バグっているようです。 (詳しい再現条件はよくわからないのですが・・・。) 普通なら[[合言葉]]の入力ダイアログ箱が出るところなのですが、出なかったりもして、謎です。 [TIME[2009-09-15T02:10:12.00Z]] * 歴史 [REFS[ - [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 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) - [412] '''[CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) ''' - [415] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) ]REFS] [FIG[ [FIGCAPTION[ [413] RFC 1945 (HTTP/1.0); RFC 2068 & 2616 (HTTP/1.1) 10.4.2 401 Unauthorized ]FIGCAPTION] >The request requires user authentication. The response [DEL[[INS[{1945}]] must]] [INS[[INS[{2068,2616}]] MUST]] include a WWW-Authenticate header field ([DEL[[INS[{1945}]] Section 10.16]] [INS[section [DEL[[INS[{2068}]] 14.46]] [INS[[INS[{2616}]] 14.47]]]]) containing a challenge applicable to the requested resource. The client [DEL[[INS[{1945}]] may]] [INS[[INS[{2068,2616}]] MAY]] repeat the request with a suitable Authorization header field ([DEL[[INS[{1945}]] Section 10.2]] [INS[[INS[{2068,2616}]] section 14.8]]). If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user [DEL[[INS[{1945}]] should]] [INS[[INS[{2068,2616}]] SHOULD]] be presented the entity that was given in the response, since that entity [DEL[[DEL[[INS[{1945}]] may]] [INS[[INS[{2068}]] MAY]]]] [INS[[INS[{2616}]] might]] include relevant diagnostic information. HTTP access authentication is explained in [DEL[[DEL[[INS[{1945}]] Section 11]] [INS[[INS[{2068}]] section 11]]]] [INS[[INS[{2616}]] "HTTP Authentication: Basic and Digest Access Authentication" [43] ]]. 要求は利用者認証を必要としています。応答は、要求された資源に適用可能な[[誰何]]を含んだ [CODE(HTTP)[[[WWW-Authenticate]]]] 頭欄を含んでいなければ'''なりません'''。クライアントは、適当な [CODE(HTTP)[[[Authorization]]]] 頭欄と共に要求を繰り返しても'''構いません'''。 要求が既に [CODE(HTTP)[Authorization]] 証明書を含んでいる場合、 [CODE(HTTP)[401]] 応答はその証明書について認証が拒否されたことを示します。 [CODE(HTTP)[401]] 応答が前の応答と同じ誰何を含んでおり、利用者エージェントが既に最低一度は認証を試みている時は、 応答に含まれている実体には関係する診断情報が含まれているかもしれませんから、 [INS[[INS[(訳注)]]利用者エージェントは]]これを利用者に提示する'''べきです'''。 * License [[RFCのライセンス]] ]FIG] * 関連 [414] [[起源鯖]]によって使われる [CODE(HTTP)[[[401]]]] に対して、[[串]]によって使われる [CODE(HTTP)[[[407]]]] もあります。