API 認証に Bearer トークンを使う
Bearer トークンは Authorization ヘッダーで「Bearer <token>」の形式で送ります。トークンを持つ者は誰でも API にアクセスできるため、パスワード同様に厳重に保護しましょう。
- 1
Bearer トークンは、API へのアクセスを許可する文字列です。"Authorization: Bearer <token>" として送信されます。サーバーはトークン(署名、有効期限、スコープ)を検証して、アクセスを許可または拒否します。Bearer トークンは、JWT、不透明トークン(イントロスペクションエンドポイントで検証)、API キーのいずれかです。シークレットとして扱ってください。保持者にアクセスを許可するものです。
- 2 JWT エンコーダー →
JWT Bearer トークンを作成します。クレームを設定します:sub(サブジェクト)、exp(有効期限)、iat(発行時刻)、scope(権限)。RS256(非対称)または HS256(対称)で署名します。トークンは自己完結型で、サーバーはデータベース検索なしで署名を検証できます。
- 3 JWT デコーダー →
Bearer JWT をデコードして検証します。署名、有効期限(exp)、開始時刻(nbf)、発行者(iss)、オーディエンス(aud)を確認します。署名が無効なトークンや期限切れのタイムスタンプのトークンは拒否してください。署名検証を決して省略しないでください。
- 4 jwt
JWT 検査ワークフローを使うと、Bearer トークンをデコード、検証し、すべてのクレームを検査できます。
よくある質問
- JWT と不透明トークンの違いは?
- JWT は自己完結型です(クレームが埋め込まれ、署名で検証可能)。データベース検索が不要ですが、サイズが大きく、失効が容易ではありません。不透明トークンはランダムな文字列です。サーバーが検索(またはイントロスペクションエンドポイントの呼び出し)をしなければなりませんが、即時に失効でき、サイズも小さいです。ステートレス API には JWT を、失効可能なアクセスには不透明トークンを使ってください。
- Bearer トークンはクライアント側でどう保存すべきですか?
- 短命トークンはメモリ(JavaScript 変数)に。最も安全ですが、ページ更新で失われます。sessionStorage は更新後も残り、タブを閉じると消えます。localStorage はセッションをまたいで残りますが、XSS に対して脆弱です。HttpOnly なしの Cookie には決して保存しないでください。SPA では、サイレントリフレッシュを使ってください(refresh トークンは HttpOnly Cookie に、アクセストークンはメモリに)。
このタスクを解決するワークフロー
関連ツール
JWT エンコーダー
エンコード JWT with HS256. Free, private, 100% client-side. Not for server-side verification. ツール
JWT デコーダー
Decode and inspect JWT header, payload, and time claims with expiry status。無料、プライベート、100%クライアントサイド。 ツール
Base64 エンコーダー
Encode text or binary data to Base64 online。無料、プライベート、100%クライアントサイド。 ツール