> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 認可時に受け取ったリフレッシュトークンに対して、リフレッシュトークンローテーションを使用する方法について説明します。

# リフレッシュトークンローテーションを使用する

<Tooltip tip="リフレッシュトークン: ユーザーに再度ログインさせることなく、新しいアクセストークンを取得するために使用するトークンです。" cta="用語集を表示" href="/ja/docs/glossary?term=refresh+token">リフレッシュトークン</Tooltip>ローテーションを使用するには、Auth0 SPA SDK を使用します。Auth0 SPA SDK は、トークンの保存、セッション管理、その他の処理を担います。

<div id="prerequisite">
  ## 前提条件
</div>

オフラインアクセスを有効にし、クライアント SDK で offline\_access スコープをリクエストするには、[リフレッシュトークンローテーションを設定](/ja/docs/secure/tokens/refresh-tokens/configure-refresh-token-rotation)してください。

<div id="enable-userefreshtokens">
  ## useRefreshTokens を有効にする
</div>

OAuth2 仕様に準拠して、ブラウザーが /<Tooltip tip="トークンエンドポイント: 認可サーバー上でプログラムからトークンを要求するために使用されるエンドポイント。" cta="用語集を表示" href="/ja/docs/glossary?term=token+endpoint">トークンエンドポイント</Tooltip> にリフレッシュトークンを要求した場合、Auth0 がリフレッシュトークンを返すのは、そのクライアントで <Tooltip tip="トークンエンドポイント: 認可サーバー上でプログラムからトークンを要求するために使用されるエンドポイント。" cta="用語集を表示" href="/ja/docs/glossary?term=Refresh+Token+Rotation">リフレッシュトークンローテーション</Tooltip> が有効になっている場合に限られます。

`createAuth0Client` の `useRefreshTokens` オプションを使用します。既定値は `false` です。このオプションが `false` の場合、`getTokenSilently()` が呼び出されて新しい <Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の認可資格情報。" cta="用語集を表示" href="/ja/docs/glossary?term=Access+Token">アクセストークン</Tooltip> が必要になると、SDK は非表示の iframe と `prompt=none` を使って新しいアクセストークンの取得を試みます。

このオプションを `true` に設定すると、`loginWithRedirect()`, `loginWithPopup()`, `getTokenSilently()` の使用時に `offline_access` スコープが自動的に要求されます。`getTokenSilently()` が呼び出され、アクセストークンの有効期限が切れている場合、SDK はキャッシュ内のリフレッシュトークンと `refresh_token` グラントタイプを使用して `/token` エンドポイントを呼び出し、ID トークンとアクセストークンの更新を試みます。

サイレント再認証は、認証リクエスト時に `prompt=none` パラメーターを送信し、非表示の iframe を使用することで実現されます。これは、<Tooltip tip="認可サーバー: ユーザーのアクセス範囲の境界を定義することに寄与する集中管理サーバーです。たとえば、認可サーバーは、ユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を表示" href="/ja/docs/glossary?term=authorization+server">認可サーバー</Tooltip> にアクティブなユーザーセッションがあることが前提です。`useRefreshTokens` を `true` に設定していても、キャッシュ内にリフレッシュトークンがない場合、SDK は iframe メソッドを使用します。これにより、ユーザーに再度ログインさせることなく、リフレッシュトークンの使用へサイレントに移行できます。

`useRefreshTokens` が `true` でもキャッシュ内にリフレッシュトークンがないために交換に失敗した場合は、iframe メソッドにフォールバックします (サードパーティ Cookie がブロックされている場合は、これも失敗する可能性があります) 。

<div id="token-storage">
  ## トークンの保存
</div>

SPA では、ID トークンとアクセストークンは認可サーバーから取得され、通常はメモリ内にキャッシュされます。トークンの更新 (ブラウザーの再読み込み、メモリキャッシュの消去、または有効期限切れによるもの) は、SDK が処理します。

<div id="example">
  ## 例
</div>

次の例では、ローカルストレージとリフレッシュトークンの両方を使用するように SDK を設定する方法を示します。

```javascript lines theme={null}
const auth0 = await createAuth0Client({
    domain: '<your Auth0 domain>',
    client_id: '<your Auth0 client ID>',
    cacheLocation: 'localstorage',
    useRefreshTokens: true
    });
    
    // ログインすると offline_access スコープが自動的にリクエストされ、
    // 取得したリフレッシュトークンが保存されます
    auth0.loginWithRedirect();
    
    // アクセストークンのサイレントリフレッシュでは /token エンドポイントを使用し、
    // 'refresh_token' グラントとキャッシュ内のリフレッシュトークンが利用されます
    await auth0.getTokenSilently();
```

<div id="learn-more">
  ## 詳しく見る
</div>

* [リフレッシュトークンローテーションを設定する](/ja/docs/secure/tokens/refresh-tokens/configure-refresh-token-rotation)
* [リフレッシュトークンローテーションを無効にする](/ja/docs/secure/tokens/refresh-tokens/disable-refresh-token-rotation)
* [トークンのベストプラクティス](/ja/docs/secure/tokens/token-best-practices)
