Slate Errors

Client Error

401

Unauthorized

— 認証が必要です

まずは確認: よくある原因 TOP3

  1. ログインしていない / セッション切れ
    Cookie の有効期限や保存状況をまず確認
  2. アクセストークンの期限切れ
    リフレッシュトークンで再発行する必要がある
  3. Authorization ヘッダの綴り間違い
    Bearer の後ろのスペースや大文字小文字、トークン文字列の欠落を見直す

何が起きたのか?

401 は「あなたが誰なのかが分からないので、この先には入れません」というサインです。 教室で言えば、職員室の入口で「身分証を見せてください」と言われたのに、何も提示せずに入ろうとした——そんな場面です。

認証情報そのものが付いていなかったり、トークンが期限切れだったり、ヘッダの綴りが違っていたり。サーバーはあなたを拒否しているのではなく、「まだ誰だか確認できていない」状態です。403(権限がない)とは原因の階層がひとつ違います。

黒板からのひとこと

職員室や保健室には「先生用」の表示があり、生徒も先生も入る前に身分を示します。誰もが入れる場所と、確認が必要な場所がある——これは安全のための仕組みで、特定の誰かを締め出すためではありません。

401 が返ってくるとき、サーバーは「もう一度、身分を提示してくれる?」と尋ねています。多くの場合は再ログインや、トークンの更新で解決します。怒られているのではなく、確認を求められているだけです。

解決への歩み

大丈夫、次はこうしてみよう:

  1. ログイン状態を確認:セッションが切れていないか、別タブでログアウトしていないか
  2. トークンの期限を確認:JWT なら exp を見て、期限切れならリフレッシュ
  3. Authorization ヘッダの中身を見るBearer xxx の綴り、トークンが切れて欠けていないか
  4. 認証サーバーの状態を確認(管理者向け):IdP のヘルス、署名鍵のローテーション、時刻同期 (NTP) のずれを順に

実際にはこう見える

$ リクエスト

curl -i https://example.com/some/path

↓ レスポンス

HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<html><body><h1>401 Unauthorized</h1></body></html>

似ているケース

もっと知りたい