次のような場合に使用: 盗まれても再利用されない、特定の端末や利用者に紐付けられたアクセストークン(認証情報)で API の呼び出しを保護するために、DPoP(デバイスの所有を証明する仕組み)のトークンバインディング機能を追加する場合。また、ユーザーが「トークンをクライアントに紐付ける」「トークンの盗難を防ぐ」「利用者に限定されたトークン」といった内容を求めている場合も対象です。
Use when adding DPoP (Demonstrating Proof-of-Possession) token binding to protect API calls with device-bound, sender-constrained access tokens that cannot be replayed if stolen. Also use when a user says "bind tokens to the client", "prevent token theft", or "sender-constrained tokens".
アクセストークンをクライアント側の暗号化キーに紐付けることで、盗まれたトークンが悪用されるのを防ぎます。
DPoP(所有権の証明)は RFC 9449 で定義された OAuth 2.0 の仕組みで、アクセストークンをクライアント側で保有する鍵ペアに暗号的に紐付けます。各 API リクエストには有効期限の短い署名付き JWT(DPoP プルーフと呼ぶ)が含まれ、リクエスト送信者が秘密鍵を持っていることを証明します。これにより、盗まれたトークンだけでは攻撃者による再利用ができなくなります。
@auth0/auth0-vue、@auth0/auth0-react、@auth0/auth0-angular、@auth0/auth0-spa-js| 概念 | 説明 |
|---|---|
| DPoP プルーフ | 各リクエストに添付される有効期限の短い署名付き JWT で、鍵の保有を証明します |
| DPoP ノンス | サーバーから発行される値で、プルーフに含める必要があり、再利用を防ぎます |
useDpop: true |
SDK オプション。DPoP プルーフの自動生成を有効にします |
createFetcher() |
SDK ヘルパー関数。fetch 互換の関数を返し、プルーフ生成を自動で処理します |
UseDpopNonceError |
サーバーがリクエスト途中でノンスを更新した場合に発生するエラー。新しいノンスでリトライしてください |
audience と一致することを確認# リソースサーバーの現在の設定を確認
auth0 api get "resource-servers" | jq '.[] | select(.identifier == "https://your-api-identifier")'
# API で DPoP トークン形式を有効化
auth0 api patch "resource-servers/{API_ID}" \
--data '{"token_dialect": "access_token_authz"}'
{API_ID}は上記の GET コマンドで返された ID に置き換えてください。
useDpop: true を audience と一緒に追加createFetcher() を使用 — SDK がプルーフ生成、ノンス管理、ヘッダー注入をすべて処理しますUseDpopNonceError を処理.env に API の audience を設定してください:
# Vite
VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id
VITE_AUTH0_AUDIENCE=https://your-api-identifier
対応する全フレームワークの完全な実装例:
エラー処理とトラブルシューティング:
UseDpopNonceError — ノンス更新の処理方法auth0-vue — Vue.js Auth0 統合auth0-react — React Auth0 統合auth0-angular — Angular Auth0 統合auth0-spa-js — Vanilla JS / フレームワーク非依存 SPA 統合auth0-mfa — 多要素認証Bind access tokens to the client's cryptographic key so stolen tokens cannot be replayed.
DPoP (Demonstrating Proof-of-Possession) is an OAuth 2.0 mechanism defined in RFC 9449 that cryptographically binds access tokens to a client-held key pair. Each API request includes a short-lived signed JWT (the DPoP proof) that proves the sender holds the private key — a stolen token alone cannot be replayed by an attacker.
@auth0/auth0-vue, @auth0/auth0-react,
@auth0/auth0-angular, or @auth0/auth0-spa-js| Concept | Description |
|---|---|
| DPoP Proof | A short-lived signed JWT attached to each request proving key possession |
| DPoP Nonce | A server-issued value that must be included in the proof to prevent replay |
useDpop: true |
SDK option that enables automatic DPoP proof generation |
createFetcher() |
SDK helper that returns a fetch-compatible function handling proofs automatically |
UseDpopNonceError |
Error thrown when the server rotates its nonce mid-flight; retry with the new nonce |
audience# Inspect current resource server settings
auth0 api get "resource-servers" | jq '.[] | select(.identifier == "https://your-api-identifier")'
# Enable DPoP token dialect on the API
auth0 api patch "resource-servers/{API_ID}" \
--data '{"token_dialect": "access_token_authz"}'
Replace
{API_ID}with the ID returned from the GET call above.
useDpop: true to your Auth0 client/provider configuration alongside your audiencecreateFetcher() instead of attaching tokens manually — the SDK handles
proof generation, nonce management, and header injection for youUseDpopNonceError in cases where the server rotates its nonceEnsure your .env includes the API audience:
# Vite
VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id
VITE_AUTH0_AUDIENCE=https://your-api-identifier
Complete implementation examples for all supported frameworks:
Error handling and troubleshooting:
UseDpopNonceError — nonce rotation handlingauth0-vue - Vue.js Auth0 integrationauth0-react - React Auth0 integrationauth0-angular - Angular Auth0 integrationauth0-spa-js - Vanilla JS / framework-agnostic SPA integrationauth0-mfa - Multi-factor authentication原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。