アクセストークン
アクセストークン とは何ですか?
アクセストークン認可サーバーが発行する短命の資格情報。クライアントが API に提示し、ユーザーやサービスの代わりに保護リソースへアクセスする。
アクセストークンは、リソース所有者がクライアントに与えた認可を表し、特定の権限とオーディエンスに制限されています。OAuth 2.0(RFC 6749)と OpenID Connect では、アクセストークンは不透明型 — 認可サーバーのイントロスペクションエンドポイント(RFC 7662)を呼び出して検証する — か、署名によってローカルで検証する自己完結型の JWT のいずれかです。通常は RFC 6750 に従って Authorization: Bearer ヘッダーで送信され、TLS 上を流れなければなりません。
単純なベアラートークンの本質的な弱点は、所持がそのまま権限を意味することです。ブラウザのストレージ、ログ、プロキシから盗まれたトークンは、誰でもリプレイできてしまいます。これが 送信者拘束型 トークンの台頭を促しました。RFC 8705 はトークンをクライアントの TLS 証明書に結びつけ(そのハッシュを cnf.x5t#S256 クレームに記録)、RFC 9449(DPoP)はトークンをクライアントが保持する鍵ペアに結びつけ、リクエストごとに新しい署名付き証明 JWT を要求するため、リプレイされたトークンは秘密鍵がなければ無意味になります。Lapsus$ で見られたセッション/トークンのリプレイや、各種の「パス・ザ・トークン」型クラウド侵入を含むトークン窃取攻撃こそ、これらの仕組みが防ぐ対象です。
ベストプラクティスは、短い有効期間(分単位)、狭いスコープ、オーディエンスと発行者の厳格な検証、alg: none の JWT トリックの拒否、更新のためのリフレッシュトークンとの併用、そしてトークンを JavaScript からアクセス可能なストレージに置かないことです。価値の高い API には、単純なベアラートークンよりも DPoP 拘束型または mTLS 拘束型のトークンを優先してください。
flowchart LR RO[リソース所有者] -->|同意を付与| AS[認可サーバー] C[クライアント] -->|トークン要求 + DPoP/mTLS 鍵| AS AS -->|短命のアクセストークン<br/>scope + aud + cnf クレーム| C C -->|ベアラートークン + 所持証明| RS[リソースサーバー / API] RS -->|署名検証/イントロスペクト<br/>aud, exp, 鍵束縛を確認| RS RS -->|許可または拒否| C
● 例
- 01
scope=read:invoices で exp が 15 分後の OAuth 2.0 アクセストークン。
- 02
認可サーバーの /introspect エンドポイントで検証される不透明トークン。
● よくある質問
アクセストークン とは何ですか?
認可サーバーが発行する短命の資格情報。クライアントが API に提示し、ユーザーやサービスの代わりに保護リソースへアクセスする。 サイバーセキュリティの ID とアクセス カテゴリに属します。
アクセストークン とはどういう意味ですか?
認可サーバーが発行する短命の資格情報。クライアントが API に提示し、ユーザーやサービスの代わりに保護リソースへアクセスする。
アクセストークン からどのように防御しますか?
アクセストークン に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。