Authorization ヘッダーとは何か - API に認証情報を送る方法

入門 | 8分 で読める | 2026.06.14

公式ドキュメント

Authorization ヘッダーとは

Authorization ヘッダーは、HTTPリクエストで認証情報をサーバに送るためのヘッダーです。

API認証では、次のような形をよく見ます。

GET /api/user HTTP/1.1
Host: api.example.com
Authorization: Bearer xxxxx.yyyyy.zzzzz

これはBearer schemeでcredentialsを提示している形です。提示しただけで本人確認やアクセス許可が完了するわけではなく、APIはトークンの有効性を検証し、対象リソースへの権限を別に判断します。

Bearer の形

ClientがHTTPSでAuthorization Bearer tokenをAPIへ送り、検証とauthorization後にresponseを受ける図

Bearer Token を送るときは、次の形になります。

Authorization: Bearer <token>

JavaScriptの fetch で書くとこうです。

const token = getAccessToken();

const res = await fetch("https://api.example.com/user", {
  headers: {
    Authorization: `Bearer ${token}`,
  },
});

APIサーバはこのヘッダーを読み、トークンを検証します。

app.get("/api/user", (req, res) => {
  const credential = readBearerCredential(req.headers.authorization);
  const principal = verifyAccessToken(credential);
  authorizeProfileRead(principal);
  res.json({ id: principal.id });
});

readBearerCredentialverifyAccessTokenauthorizeProfileReadは処理を説明するための仮名です。実装では認証基盤やフレームワークの公式ライブラリを使い、scheme、署名またはintrospection、発行者、利用先、期限、scopeなどをAPI仕様に従って検証します。

Cookie認証では、ブラウザがCookieを自動で送ります。

GET /mypage HTTP/1.1
Cookie: session_id=abc123

Authorizationヘッダーでは、アプリケーションコードが明示的にトークンをヘッダーへ入れます。

観点CookieAuthorization ヘッダー
送信者ブラウザが自動送信アプリが明示的に送信
代表例Cookie: session_id=...Authorization: Bearer ...
CSRF起きやすいので対策が必要自動送信されないため性質が違う
XSS時Cookie値はHttpOnlyで隠せるトークン保存場所によって盗まれる

ポイント: Authorization ヘッダー自体が危険なのではありません。問題は、そのヘッダーに入れるトークンをブラウザのどこに保存するかです。

ブラウザから送る場合の注意

SPAがAPIを直接呼ぶ構成では、アプリがaccess tokenをAuthorizationヘッダーへ入れます。

// API呼び出し時
fetch("https://api.example.com/orders", {
  headers: {
    Authorization: `Bearer ${accessToken}`,
  },
});

この例は保存方法を示していません。localStorageへ長期保存するなどJavaScriptから読める場所に置くと、XSS時に窃取される可能性があります。保存と更新は認証基盤が推奨する構成に従います。

BFF 構成での使い方

BFF構成では、ブラウザは直接外部APIを呼びません。

ブラウザはCookieでBFFへアクセスし、BFFがサーバ側で Authorization ヘッダーを付けてAPIを呼びます。

// BFF / サーバ側
const res = await fetch("https://api.example.com/orders", {
  headers: {
    Authorization: `Bearer ${accessToken}`,
  },
});

この場合、accessToken はブラウザに露出しません。ユーザーごとのtokenを固定の環境変数へ置くのではなく、BFFのサーバー側セッションなどで、利用者・期限・更新情報と結び付けて管理します。

よくある誤解

Authorization ヘッダーなら CSRF 対策はいらない?

ブラウザが自動で付けるCookieとは違い、Authorization ヘッダーは通常アプリコードが明示的に付けます。そのため、Cookie認証と同じ形のCSRFとは性質が違います。

ただし、XSSがあればアプリコードの文脈でAPIを呼ばれる可能性があります。CSRFが問題になりにくいから安全、という意味ではありません。

そうではありません。

Authorization ヘッダーに入れるトークンを localStorage に保存すると、XSS時に盗まれやすくなります。HttpOnly Cookie の方がトークン窃取に強い場面もあります。

安全性は、ヘッダーの種類だけでなく、保存場所、送信範囲、有効期限、失効方法で決まります。

まとめ

Authorization ヘッダーは、APIに認証情報を送るためのHTTPヘッダーです。

  • Authorization: Bearer <token> がよく使われる
  • Cookieと違い、通常はアプリが明示的に送る
  • Bearerを提示しただけでは本人確認・認可は完了しない
  • BFF構成では、サーバ側がAPIへ Authorization ヘッダーを付ける
  • 危険性は「トークンをどこに保存するか」に大きく左右される

scheme、Basic認証、401と403、WWW-Authenticateまで含む全体像は、canonical記事のAuthorization ヘッダー - Basic / Bearer / API Keyを参照してください。

参考リソース

  • 公式ドキュメント - Authorization ヘッダーとは何か - API に認証情報を送る方法 を確認するための一次情報

次に読む記事

← 一覧に戻る
PR
PR
PR
PR