Bearer Token の意味
Bearer Token の Bearer は「持参人」という意味です。
Bearer Tokenは、追加の所持証明なしに、トークンを提示した主体がその権限を行使できるトークンです。トークンの所持だけで人間の本人性が証明されるわけではありません。
APIリクエストでは、よく次のように送ります。
GET /api/user HTTP/1.1
Host: api.example.com
Authorization: Bearer xxxxx.yyyyy.zzzzz
resource serverはトークンの有効性、利用先、期限、scopeなどを仕様に従って検証し、その後に対象リソースへの認可を判断します。
パスワードとの違い
パスワードは本人だけが知っている秘密です。一方、Bearer Token は「持っていること」自体が権限になります。
| 種類 | 使い方 | 漏れたとき |
|---|---|---|
| パスワード | ログイン時に本人確認する | アカウント乗っ取りにつながる |
| Bearer Token | API呼び出しごとに提示する | トークンに与えられた権限を使われる |
Bearer Token は、入館証に近いです。入館証を拾った人が建物に入れてしまうなら、入館証の管理は非常に重要です。
JWT は Bearer Token として使われることが多い
JWT はトークンの形式です。Bearer Token はトークンの使い方です。
JWTを Authorization: Bearer で送ると、JWTがBearer Tokenとして使われていることになります。
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
JWTでない不透明な文字列も、Bearer Tokenとして使えます。
Authorization: Bearer opaque_random_token_123
ポイント: JWT は「形式」、Bearer は「提示方式」です。JWT だから必ず Bearer とは限りませんが、API認証では組み合わせて使われることが多いです。
盗まれると危険な理由

Bearer Tokenは所持者が利用できるため、盗まれると攻撃者がそのまま提示できる可能性があります。
たとえば、トークンが localStorage にあるとします。
const token = localStorage.getItem("access_token");
XSSで攻撃者のJavaScriptが実行されると、同じオリジンから値を読み取られ、外部へ送られる可能性があります。このコードは推奨例ではなく、JavaScriptから読めること自体が攻撃面になることを示しています。
盗まれたトークンは、攻撃者の環境からAPIに送れます。
GET /api/me HTTP/1.1
Host: api.example.com
Authorization: Bearer stolen_token
これが「localStorage にJWTを置くな」と言われる大きな理由です。
Cookie との違い
Cookie認証では、ブラウザがCookieを自動送信します。
GET /mypage HTTP/1.1
Cookie: session_id=abc123
Bearer Token認証では、クライアントが Authorization ヘッダーに明示的に入れて送ります。
Authorization: Bearer token
| 観点 | Cookie | Bearer Token |
|---|---|---|
| 送信方法 | ブラウザが自動送信 | アプリがヘッダーに入れる |
| JSから読む必要 | HttpOnlyなら読めない | クライアント構成による |
| CSRF | 注意が必要 | Cookieほど自動送信されない |
| トークン窃取 | HttpOnlyで軽減 | 保存場所に依存 |
Bearer Token を安全に使う考え方
Bearer Token を使うときは、次の対策を組み合わせます。
- HTTPSを必須にする
- 有効期限を短くする
- 必要最小限の権限にする
- audienceとscopeをresource serverで検証する
- refresh token を慎重に扱う
- ブラウザに長期保存しない
- サーバ側やBFFに隔離する
- 失効・ローテーション・漏えい時の対応を決める
特にブラウザでは、JavaScriptから読める場所に長く保存しないことが重要です。
まとめ
Bearer Tokenは、所持者がトークンに与えられた権限を行使できる仕組みです。
Authorization: Bearer <token>でAPIに送る- 所持しているだけで人間の本人性が証明されるわけではない
- JWT が Bearer Token として使われることが多い
- 盗まれると攻撃者がそのままAPIを使える
- localStorage に長く置くとXSS時に盗まれやすい
- BFF構成では、Bearer Token をサーバ側に閉じ込める
Bearer Token の危険性を理解すると、「JWTが悪い」のではなく「Bearer Tokenをブラウザに読める形で置くのが危険」という整理ができます。