JWT 401/403 Troubleshooting

401/403で失敗した認証リクエストを、ヘッダーとトークン情報から段階的に診断します。入力はサーバーへ送信しません。

状態

ブラウザ内で処理します。入力はサーバーへ送信しません。機密値は伏せ字化して貼り付けてください。

使い方

まず 401/403 のステータスとヘッダーを貼り付け、必要ならJWTを追加して診断します。exp/nbf/iat と WWW-Authenticate の両方を同時に確認できます。

注意(このツール)

  • 署名検証や鍵整合までは扱いません。必要に応じて JWT Verifier を使ってください。
  • 時刻診断は端末時計ベースです。サーバー時刻との差分がある場合は「時刻許容(秒)」で調整してください。

このページについて

何をするツール?

HTTPステータス(401/403)、Authorization、WWW-Authenticate、JWT payload を同時に見て、失敗ポイントを候補化します。

「401なのに原因が分からない」「403が認可不足なのか設定不整合なのか不明」というケースの一次切り分け用ハブです。

401 と 403 の基本整理

  • 401: 認証に失敗(トークン不備・期限切れ・署名不正など)
  • 403: 認証済みだが認可されない(scope不足・権限不足・ポリシー拒否)
  • 401では WWW-Authenticate 応答が重要(error / error_description / scope)

よくある症状

  • Authorization ヘッダーは付いているのに 401 が返る
  • トークン更新直後に 401 が多発する
  • JWTはデコードできるのに API で 403 になる
  • 環境差(本番だけ)で 401/403 挙動が変わる

切り分け手順(おすすめ)

  • ステータス行と Request/Response ヘッダーを貼り付ける
  • JWT(または payload JSON)を貼り付ける
  • まず 401/403 の分類、次に claim/時間/scope を確認する
  • WWW-Authenticate の error/scope を根拠として次アクションを決める

確認ポイント(実務)

  • Authorization が Bearer 形式か(大文字小文字・空白含む)
  • exp / nbf / iat が現在時刻と整合しているか(clock skew含む)
  • aud / iss がAPI側期待値と一致しているか
  • scope/scp/roles が必要権限を満たすか
  • WWW-Authenticate に invalid_token / insufficient_scope が出ていないか

推奨(運用)

  • 401時は WWW-Authenticate を必ず返し、error を明示する
  • トークン検証ログに失敗理由(exp/aud/iss/scope)を残す
  • サーバー時刻同期(NTP)と許容スキューを明文化する
  • 認証失敗(401)と認可拒否(403)をアプリ内で明確に分ける
  • OAuth Bearer Diagnostic
  • Authorization Inspect
  • WWW-Authenticate Inspect
  • JWT Decoder
  • JWT Verifier
  • JWT TTL Check
  • JWT Claim Audit
  • JWT Clock Skew Check

このツールでできること

  • 401/403 の分類と一次診断
  • Authorization/WWW-Authenticate 整合チェック
  • JWT時刻クレーム(exp/nbf/iat)評価
  • aud/iss/scope系の不一致ヒント提示

注意(運用)

  • このページは診断支援です。最終判断は実装・認可ポリシー・ログに基づいてください。
  • 署名検証自体は簡易判定しません。秘密鍵/公開鍵検証は JWT Verifier を使ってください。
  • 機密情報は伏せ字化して貼り付けることを推奨します。

参照仕様

  • RFC 9110(HTTP Semantics: 401/403)
  • RFC 6750(OAuth 2.0 Bearer Token Usage)
  • RFC 7519(JWT)

FAQ

401 と 403 の切り分けを間違えると何が起きますか?

クライアントの再認証処理やリトライ戦略が誤動作し、障害切り分けが難しくなります。

JWTが正しく見えるのに401になる理由は?

署名不一致、aud/iss不一致、clock skew、キー更新直後の検証失敗などが代表例です。

403の時にまず見るべき項目は?

必要scope/roleと token claim の一致、WWW-Authenticateのinsufficient_scope、エンドポイントごとの認可ポリシーを確認してください。

参考リンク

  1. RFC 9110
  2. RFC 6750
  3. RFC 7519
  4. MDN: WWW-Authenticate

症状別ケーススタディ(このページ向け)

401と403の分岐を実運用ログから再現するためのページです。応答ヘッダーとクレームを同時に見ます。

  • 401時は WWW-Authenticate の error と description を確認する
  • 403時は scope/role 不足とポリシー条件を確認する
  • 時刻系拒否は exp/nbf とサーバー時刻差を確認する

実装時チェックリスト(このページ向け)

  • 401/403 の返却条件をAPI仕様として明文化する
  • WWW-Authenticate の値を実装間で統一する
  • クレーム不足時のエラーメッセージを定型化する
  • 障害時に失敗トークンの最小情報だけ採取する

site_map ルールに基づいて、次に確認すべきページを表示しています。

  1. OAuth Bearer Diagnostic — Bearer と WWW-Authenticate の整合を診断
  2. Authorization Inspect — Authorization ヘッダー形式を解析
  3. WWW-Authenticate Inspect — WWW-Authenticate challenge を解析
  4. JWT Decoder — JWTのheader/payloadを復号して整形表示
  5. JWT Verifier — JWT署名(HS/RS/ES)を検証
  6. JWT TTL Check — exp/iat/nbf から有効期間と残TTLを算出
  7. JWT Claim Audit — JWTの必須/推奨クレーム不足を監査
  8. JWT Clock Skew Check — iat/nbf/exp の時刻ズレを検出

認証

Bearer・WWW-Authenticate・JWT を横断して認証失敗を切り分け