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、エンドポイントごとの認可ポリシーを確認してください。
参考リンク
症状別ケーススタディ(このページ向け)
401と403の分岐を実運用ログから再現するためのページです。応答ヘッダーとクレームを同時に見ます。
- 401時は WWW-Authenticate の error と description を確認する
- 403時は scope/role 不足とポリシー条件を確認する
- 時刻系拒否は exp/nbf とサーバー時刻差を確認する
実装時チェックリスト(このページ向け)
- 401/403 の返却条件をAPI仕様として明文化する
- WWW-Authenticate の値を実装間で統一する
- クレーム不足時のエラーメッセージを定型化する
- 障害時に失敗トークンの最小情報だけ採取する
次に見る(診断順)
site_map ルールに基づいて、次に確認すべきページを表示しています。
- OAuth Bearer Diagnostic — Bearer と WWW-Authenticate の整合を診断
- Authorization Inspect — Authorization ヘッダー形式を解析
- WWW-Authenticate Inspect — WWW-Authenticate challenge を解析
- JWT Decoder — JWTのheader/payloadを復号して整形表示
- JWT Verifier — JWT署名(HS/RS/ES)を検証
- JWT TTL Check — exp/iat/nbf から有効期間と残TTLを算出
- JWT Claim Audit — JWTの必須/推奨クレーム不足を監査
- JWT Clock Skew Check — iat/nbf/exp の時刻ズレを検出
同テーマの導線
認証
Bearer・WWW-Authenticate・JWT を横断して認証失敗を切り分け
- OAuth Bearer Diagnostic — Bearer と WWW-Authenticate の整合を診断
- JWT Claim Audit — JWTの必須/推奨クレーム不足を監査
- JWT TTL Check — exp/iat/nbf から有効期間と残TTLを算出
- JWT Clock Skew Check — iat/nbf/exp の時刻ズレを検出
- Authorization Inspect — Authorization ヘッダー形式を解析
- WWW-Authenticate Inspect — WWW-Authenticate challenge を解析
- JWT Decoder — JWTのheader/payloadを復号して整形表示
- JWT Verifier — JWT署名(HS/RS/ES)を検証