コンテンツへスキップ
uencoder

API 認証に Bearer トークンを使う

Bearer トークンは Authorization ヘッダーで「Bearer <token>」の形式で送ります。トークンを持つ者は誰でも API にアクセスできるため、パスワード同様に厳重に保護しましょう。

  1. 1

    Bearer トークンは、API へのアクセスを許可する文字列です。"Authorization: Bearer <token>" として送信されます。サーバーはトークン(署名、有効期限、スコープ)を検証して、アクセスを許可または拒否します。Bearer トークンは、JWT、不透明トークン(イントロスペクションエンドポイントで検証)、API キーのいずれかです。シークレットとして扱ってください。保持者にアクセスを許可するものです。

  2. 2
    JWT エンコーダー →

    JWT Bearer トークンを作成します。クレームを設定します:sub(サブジェクト)、exp(有効期限)、iat(発行時刻)、scope(権限)。RS256(非対称)または HS256(対称)で署名します。トークンは自己完結型で、サーバーはデータベース検索なしで署名を検証できます。

  3. 3
    JWT デコーダー →

    Bearer JWT をデコードして検証します。署名、有効期限(exp)、開始時刻(nbf)、発行者(iss)、オーディエンス(aud)を確認します。署名が無効なトークンや期限切れのタイムスタンプのトークンは拒否してください。署名検証を決して省略しないでください。

  4. 4

    JWT 検査ワークフローを使うと、Bearer トークンをデコード、検証し、すべてのクレームを検査できます。

よくある質問

JWT と不透明トークンの違いは?
JWT は自己完結型です(クレームが埋め込まれ、署名で検証可能)。データベース検索が不要ですが、サイズが大きく、失効が容易ではありません。不透明トークンはランダムな文字列です。サーバーが検索(またはイントロスペクションエンドポイントの呼び出し)をしなければなりませんが、即時に失効でき、サイズも小さいです。ステートレス API には JWT を、失効可能なアクセスには不透明トークンを使ってください。
Bearer トークンはクライアント側でどう保存すべきですか?
短命トークンはメモリ(JavaScript 変数)に。最も安全ですが、ページ更新で失われます。sessionStorage は更新後も残り、タブを閉じると消えます。localStorage はセッションをまたいで残りますが、XSS に対して脆弱です。HttpOnly なしの Cookie には決して保存しないでください。SPA では、サイレントリフレッシュを使ってください(refresh トークンは HttpOnly Cookie に、アクセストークンはメモリに)。

このタスクを解決するワークフロー

関連ツール