401 Unauthorizedとは
401 Unauthorized(フォー・オー・ワン・アンオーソライズド)は、有効な認証情報が必要、または認証に失敗したことを示すHTTPステータスです。
英語名はUnauthorizedですが、プロトコル上の中心は認証です。オリジンサーバーは401応答に少なくとも一つのWWW-Authenticate 認証要求を含め、利用可能な認証方式を示します。
401は「誰かは分かったが権限がない」状態ではありません。有効な認証情報で本人・クライアントを認証できていない状態です。

認証要求と応答
Basic、Bearerなど一つ以上の方式と必要な引数を示します。
選んだ方式に従い、次の要求へ認証情報を付けます。
認証方式、保護領域、接続先を越えて無条件に再利用しません。
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」