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

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

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

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

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

`createAuth0Client` の `useRefreshTokens` オプションを使用します。既定値は `false` です。このオプションが `false` に設定されている場合、`getTokenSilently()` が呼び出されて新しい <Tooltip tip="アクセストークン: API へのアクセスに使用される認可資格情報で、不透明な文字列または JWT の形式を取ります。" cta="用語集を見る" href="/docs/ja-jp/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="Authorization Server: ユーザーのアクセス範囲の境界を定義するのに寄与する集中的なサーバー。たとえば、認可サーバーはユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=authorization+server">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>

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