トークンは認証や権限の確認に提示する値

トークンは、認証の結果や許可された操作などを扱うために発行する値です。利用者やアプリがAPIへ提示し、APIが検証して要求を受け付けるか判断します。値がランダムな文字列の場合も、検証可能なデータを含む場合もあります。

たとえば写真一覧の読み取りだけを許可するアクセストークンをアプリへ発行します。アプリはその値を写真APIへ送り、APIは有効性と読み取り権限を確認して写真一覧を返します。トークンの見た目だけでは、持つ権限は分かりません。

参照:出典 s1

Bearerは持っている相手を受け入れる使い方

Bearerトークンは、値を持っていることを根拠に利用できるトークンです。通常はAuthorization: Bearerの後ろへ値を付け、HTTPSでAPIへ送ります。毎回パスワードを渡す必要を減らせますが、盗まれたトークンも使われ得ます。

Bearerは提示の方法で、JWTはデータ形式です。ランダムな文字列もJWTもBearerとして使えます。次の値は説明用です。URLのクエリーに載せると履歴やログへ残りやすいため、通常はヘッダーを使います。

説明用の通信例・設定例・擬似コード

GET /photos HTTP/1.1
Host: api.example
Authorization: Bearer example-token-not-a-real-secret

参照:出典 s1

APIキーの意味と権限はサービスごとに違う

APIキーは、APIを使うアプリや契約などを識別するための値を指します。利用量の計測に使うものも、秘密の認証情報として操作を許すものもあります。名前だけで、秘密にすべきか、利用者個人を識別するかは判断できません。

たとえば配信するブラウザのコードに秘密の書き込み用キーを含めると、利用者は配布されたコードからキーを取り出せます。攻撃者がそのキーでAPIを呼べば、キーが許すデータの追加や削除を実行できるおそれがあります。公開を前提とした識別用キーと、秘密の権限を持つキーを区別します。

参照:出典 s2

有効性・利用先・権限をAPIが確認する

サーバーはトークンが正規に発行されたものか、期限内か、失効していないか、今回のAPI向けかを確認します。保存済みの対応表を調べる方式と、署名などを検証する方式では処理が異なります。

スコープは、読み取りや更新など許可範囲を表す指定です。読み取り用トークンで更新を許可しないようにします。スコープが合っていても、利用者が対象の写真を読めるかという認可も必要です。

参照:出典 s1 / 出典 s2

短い期限と小さい権限で被害を抑える

漏えいしたトークンが全データを削除でき、無期限で使えると、攻撃者の操作範囲と期間が広がります。必要な操作だけを許可し、期限を設け、発行先や環境ごとに分けます。

失効は、発行済みの値を期限前でも受け付けなくすることです。新しい値を発行するローテーションだけでは、古い値が直ちに無効になるとは限りません。盗難時には旧値の拒否、利用履歴の調査、配布先の差し替えまで行います。

参照:出典 s1 / 出典 s2

保存先とログへの混入を確認する

確認問題:トークンをBase64へ変換してログへ残せば安全でしょうか。答えは違います。復元できるので、トークンを読める人は元の権限を利用できます。

自分の環境で、HTTPログ、エラー通知、画面の保存領域、ビルド成果物へ値が入っていないか確認します。実値を使った資料を共有せず、ヘッダーを記録するときは秘密部分を除きます。

参照:出典 s1 / 出典 s2

出典・確認範囲

  1. [s1] The OAuth 2.0 Authorization Framework: Bearer Token UsageIETF / RFC 6750 / 確認日 2026-11-03
  2. [s2] Secrets Management Cheat SheetOWASP / 確認日 2026-11-03
未確認事項・限界

通信例・設定例・被害の例は、仕組みを理解するための仮定です。特定の製品で発生した事件を示すものではありません。ブラウザやサービス固有の設定は、利用する環境の公式資料でも確認してください。