アプリケーション 2026-07-11 ⏱ 約 6 分

アクセストークンの検証と失効とは?Introspection・JWT AT・Revocation

アクセストークンの2方式(opaque + Introspection / JWTアクセストークン)の検証方法と、Token Revocationによる失効を比較する。RFC 7662・RFC 9068・RFC 7009を整理する。

Read in: en
アクセストークンの検証と失効とは?Introspection・JWT AT・Revocation

概要

アクセストークンを受け取ったリソースサーバーは、それが有効かどうかをどう判断するのか。アクセストークンには大きく2つの方式があり、検証のやり方も、失効の効き方も異なる。

この記事では、opaqueトークン + Token Introspection(RFC 7662)と、JWTアクセストークン(RFC 9068)の検証方法を比較する。あわせて、Token Revocation(RFC 7009)による失効の仕組みまで整理する。

関連するRFCは以下の通り。

2つのアクセストークン方式

アクセストークンには次の2種類がある。

opaque + Token Introspection(RFC 7662)

opaqueトークンは、リソースサーバーが単独では中身を判断できない。そこで、ASのintrospectionエンドポイントに問い合わせて、トークンの状態やメタ情報を得る。

sequenceDiagram participant C as クライアント participant RS as リソースサーバー participant AS as 認可サーバー C->>RS: Bearer opaqueトークン RS->>AS: POST /introspect(token=...) AS-->>RS: { "active": true, "scope": "...", "exp": ... } RS-->>C: 保護リソース(activeなら)

レスポンスのactiveが最重要で、trueなら有効、falseなら無効。ほかにscopesubexpclient_idaudなどが返る。introspectionエンドポイントはクライアント認証が必要である。

JWTアクセストークン(RFC 9068)

JWTアクセストークンは、必要な情報(sub, scope, exp, audなど)をトークン自体に含む。リソースサーバーは署名を検証すれば、ASに問い合わせずローカルで検証できる。

RFC 9068が定める主なポイント。

2方式の比較

graph TB subgraph "opaque + Introspection" O1[トークン受信] --> O2[ASに問い合わせ] O2 --> O3[active を確認] end subgraph "JWT AT" J1[トークン受信] --> J2[署名をローカル検証] J2 --> J3[aud/exp を確認] end
観点 opaque + Introspection JWT AT
検証 ASに問い合わせ ローカル検証
即時失効 効く 苦手(expまで有効)
スケール ASがボトルネックになりうる しやすい
ネットワーク負荷 高い(毎回問い合わせ) 低い

Token Revocation(RFC 7009)

RFC 7009は、トークンを明示的に失効させるためのrevocationエンドポイントを定義する。ログアウトやパスワード変更、トークン漏洩時に、クライアントがトークンを失効させる。

POST /revoke
token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token

まとめ

参考リンク

Tags: OAuth 認可
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事