用語辞典・エラー・運用

401 Unauthorized

401 Unauthorizedとは

401 Unauthorized(フォー・オー・ワン・アンオーソライズド)は、有効な認証情報が必要、または認証に失敗したことを示すHTTPステータスです。

英語名はUnauthorizedですが、プロトコル上の中心は認証です。オリジンサーバーは401応答に少なくとも一つのWWW-Authenticate 認証要求を含め、利用可能な認証方式を示します。

401は「誰かは分かったが権限がない」状態ではありません。有効な認証情報で本人・クライアントを認証できていない状態です。

認証情報のない要求へ認証認証要求を返すクライアントが方式を選び、秘密情報を安全に取得して要求をやり直す
認証情報のないクライアントが保護された入口から複数方式の認証要求を受け、安全な保管場所から適切な認証情報を取り出して再送し、アクセスを許可される流れを示すピクトグラム図解
図1認証要求は認証方式と引数を示します。ログインページのHTMLを返すだけでなく、HTTPヘッダーとして正しく提示します。

認証要求と応答

WWW-Authenticateサーバーからの認証要求

Basic、Bearerなど一つ以上の方式と必要な引数を示します。

Authorizationクライアントが送る認証情報

選んだ方式に従い、次の要求へ認証情報を付けます。

保護領域認証情報を使ってよい範囲

認証方式、保護領域、接続先を越えて無条件に再利用しません。

TLS認証情報を通信経路で守る

Basic等は暗号化そのものではないためHTTPSを前提にします。

401・403・407を分ける

コード応答主体不足しているもの
401オリジンサーバー振り分け先資源に有効な認証認証情報
403サーバー認証を直しても得られない権限・方針
407プロキシプロキシを使うための認証認証情報

403 Forbiddenは要求を理解しているが履行を拒否する状態です。何度ログインしても権限方針が変わらなければ403のままです。

トークン失効の原因を分ける

Bearer トークンでは未送信、期限切れ、署名不正、発行者・対象サービス不一致、対象範囲不足などが考えられます。対象範囲不足を401と403のどちらで表すかは認証方式仕様とAPI方針を確認します。

端末時刻ずれは期限判定を誤らせます。トークンを画面やログへ貼る前に、時刻、発行者、対象サービス、対象範囲、鍵更新を秘密値を露出させず確認します。

認証情報を漏らさない

Authorization ヘッダー、セッションCookie、パスワードをアクセスログ、分析、エラー本文へ残しません。リダイレクトで別発信元へ移るときも認証情報を転送しないようクライアントとプロキシを設定します。

401応答は認証状態に依存します。共有キャッシュへ個人別認証要求や本文を誤保存しないよう、Authorization 要求のキャッシュ規則とCache-Controlを確認します。

401は発信元が有効な認証認証情報を得られず要求を適用しなかった状態です。WWW-Authenticate、認証情報の適用範囲、TLS、トークン条件を確認し、権限拒否の403と分けます。

401とWWW-Authenticate:RFC 9110「401 Unauthorized」

関連用語