OAuth 2.0のトークンの種類と用途
概要
OAuth 2.0の認可フローで発行される主なトークンは「アクセストークン」と「リフレッシュトークン」です。
それぞれの用途に加え、トークンの形式(JWT型/不透明型)についても解説します。
1. アクセストークン(Access Token)
用途
- APIやリソースサーバーへのアクセス権限を示すトークン
- クライアントがリソースサーバーにリクエストする際に利用
特徴
- 通常は短い有効期限(例:数分~数十分)
- 権限(スコープ)がトークンに紐付けられている
2. リフレッシュトークン(Refresh Token)
用途
- アクセストークンの有効期限切れ後、新しいアクセストークンを取得するためのトークン
- クライアントが認可サーバーに対し、再認証なしでトークンを更新
特徴
- クライアントに長期間保持される
- 通常はバックエンドサーバーで安全に管理される
- 取り消し(Revoke)が容易
3. トークンの形式
JWT型(JSON Web Token)
- トークン自体が「署名付きのデータ構造」となっており、内容(payload)を確認可能
- 発行元や有効期限、スコープ情報などをクライアント・リソースサーバーが検証できる
- 多くのAPIサービスで標準的に採用(Google、AWS、LINEなど)
利点
- 発行元の確認や改ざん検知が容易
- 分散システムでスケーラブル(状態管理不要)
注意点
- 一度発行すると、有効期間中は原則取り消し不可(リスト型リボークなどの工夫が必要)
- トークンのサイズがやや大きくなる
不透明型(Opaque Token)
- ランダムな文字列で、トークン自体は中身がわからない
- リソースサーバーは、認可サーバーと連携してトークンの有効性やスコープを確認する必要がある
利点
- 流出時も内容が推測されにくい
- サーバー側で即時リボーク・権限変更がしやすい
注意点
- リソースサーバーが認可サーバーへ毎回照会する必要があり、パフォーマンスに影響する場合も
4. トークンのまとめ表
| トークン種類 | 主な用途 | 形式 | 有効期限 | 利用例 |
|---|---|---|---|---|
| アクセストークン | APIアクセス・権限管理 | JWT型/不透明型 | 短い |