JSON Web トークンの検証
JSON web トークン (JWT) は、今日の多くのウェブアプリケーションにおける認証コンポーネントの一部としてよく使用されます。JWTはユーザーとそのアクセスを特定するために重要であるため、トークンの整合性を確保することが重要です。
API ShieldのJWT検証は、受信したJWTをAPIのオリジンに渡す前に暗号的に検証することで、JWTのリプレイ攻撃やJWTの改ざんを防ぎます。JWT検証は、期限切れのトークンやまだ有効でないトークンを持つリクエストも停止します。
JWT検証が保護するためには、エンドポイントをエンドポイント管理に追加する必要があります。
JWT検証の構成は、JWT署名者の公開JSON Webキーセット(JWKS)を追加してトークン検証構成を作成し、検証のために含めるホスト名とエンドポイントを指定してJWT検証ルールを作成することから成ります。
- Cloudflareダッシュボード ↗にログインし、アカウントとドメインを選択します。
- セキュリティ > API Shield > 設定に移動します。
- JSON Webトークン設定の下で、構成を追加を選択します。
- 構成の名前を追加します。
- Cloudflareがこの構成のために受信リクエストでJWTを見つける場所(ヘッダーやクッキー、その名前など)を選択します。
- JWT発行者の公開鍵(JWKS)をコピーして貼り付けます。
各JWT発行者は通常、インターネット上の既知のURLで検証用の公開鍵(JWKS)を公開しています。どこで入手するか分からない場合は、アイデンティティ管理者に連絡してください。
アイデンティティプロバイダーがJWKSを更新したときに自動的に最新の状態を保つために、Workerを使用できます。Workerの設定については、キーを自動的に更新するためのWorkerの設定を参照してください。
- Cloudflareダッシュボード ↗にログインし、アカウントとドメインを選択します。
- セキュリティ > API Shield > APIルールに移動します。
- ルールの名前を追加します。
- ルールを使用して保存されたエンドポイントでリクエストを保護するホスト名を選択します。
- JWT検証が無視するエンドポイントを選択解除します(例:JWTを生成するために使用されるエンドポイント)。
- 受信リクエストに対応するトークン検証構成を選択します。
- これらのエンドポイントでトークンの存在を厳密に強制するかどうかを選択します。
- クライアントがリクエストにJWTを送信することを100%期待しない場合は、無視を選択します。JWT検証は、存在するJWTを検証します。
- それ以外の場合、選択したホスト名とエンドポイントへのすべてのリクエストにJWTが含まれることを期待する場合は、非準拠としてマークを選択します。
- 非準拠のリクエストに対して取るアクションを選択します。たとえば、検証に合格しないJWT(期限切れ、改ざん、または不正な署名トークン)や、前のステップで非準拠としてマークが選択されたときにJWTが欠落しているリクエストです。
- 保存を選択します。
リクエストに2つの異なるJWTが存在することを期待し、両方を検証したい場合は、2つの異なるトークン構成を作成する必要があります。検証ルールで2つの構成を選択する際は、複数構成の検証動作の下ですべての構成を検証を選択します。
2つの異なるアイデンティティプロバイダー間で移行することを期待する場合は、2つの異なるトークン構成と2つの異なる検証ルールを作成する必要があります。それぞれの構成に対応するルールです。この設定により、移行の状態に応じて異なる検証ルールのアクションを変更できます。
JWT検証はすべてのAPI Shield顧客に利用可能です。API Shieldを購入していないエンタープライズ顧客は、Cloudflareダッシュボードで契約外サービスとしてAPI Shieldをプレビュー ↗するか、アカウントチームに連絡することができます。
現在、以下の既知の制限があります:
- JWT検証は、クライアントリクエストのヘッダーまたはクッキーで送信されたJWTにのみ機能します。クライアントが
POSTボディでJWTを送信する場合は、そのフィードバックをアカウントチームに伝えてください。 - JWT検証は、エンドポイント管理に追加されたエンドポイント(ホスト、メソッド、パス)に対してのみ機能します。すべてのエンドポイントをAPIディスカバリー、スキーマ検証、Cloudflareダッシュボードを介して手動で、またはAPIを介してエンドポイント管理に追加できます。