リフレッシュトークンのローテーションを構成する

DashboardまたはAuth0 SPA SDKを使用して、アプリケーションごとにリフレッシュトークンのローテーションを構成します。リフレッシュトークンのローテーションが有効な場合、ユーザーはシームレスな遷移が可能となります。アプリケーションは、前の、有効期限がなくローテーションしないリフレッシュトークンを使用し、ローテーションするリフレッシュトークンに切り替えます。

ローテーションしないリフレッシュトークンからローテーションするリフレッシュトークンに移行する(またはその逆の)場合、トークンは自動的に失効します。

  • リフレッシュトークンのローテーションが有効な場合: ローテーションしないリフレッシュトークンを交換すると新しいリフレッシュトークンが発行され、同じclient_id、リソースサーバー、ユーザー、およびテナントに対して発行されたローテーションしないトークンがすべて削除されます。

  • リフレッシュトークンのローテーションが無効な場合: ローテーションするリフレッシュトークンを交換するとローテーションしないリフレッシュトークンが発行され、同じclient_id、リソースサーバー、ユーザー、およびテナントに対して発行されたローテーションするリフレッシュトークンファミリーが失効します。

Dashboardで構成する

  1. [Dashboard]>[Applications(アプリケーション)]に移動します。

  2. 構成したいアプリケーションを選択します。

  3. [Settings(設定)]タブに移動します。

  4. [Refresh Token Rotation(リフレッシュトークンのローテーション)]で、[Allow Refresh Token Rotation(リフレッシュトークンのローテーションを許可する)]を有効にします。.

    Dashboard アプリケーション アプリケーション設定タブ リフレッシュトークンのローテーション

  5. 自動再利用検出をトリガーする前に、要求と応答の間に時間の余裕を持たせるために、リフレッシュトークンに対して、[Rotation Overlap Period(ローテーションのオーバーラップ期間)]を秒単位で入力します。このオーバーラップ期間は、指定された時間枠内でローテーションするリフレッシュトークンを複数回にわたって交換するときに、同時実行の問題を回避するのに役立ちます。この期間中、侵害検出機能は適用されず、ローテーションする新しいリフレッシュトークンが発行されます。再利用できるのは直前のトークンのみです。最後から2番目のトークンが交換されると、侵害検出がトリガーされます。

  6. [Save Changes(変更の保存)]を選択します。

Auth0 SPA SDKで構成する

Auth0 SPA SDKを使用して、リフレッシュトークンのローテーションを有効にすることができます。オフラインアクセスを有効にして、クライアントSDKでオフラインアクセスのスコープを要求しなければなりません。

  1. 最新バージョンのauth0-spa-js SDKをインストールします: npm install @auth0/auth0-spa-js

  2. SDKで機能を有効にするには、offline_accessスコープの送信を開始するようにuseRefreshTokens: trueを設定します。

    codeblockOld.header.login.configureSnippet
    const auth0 = await createAuth0Client({
          domain: '{yourDomain}',
          client_id: '{yourClientId}',
          audience: '{yourApiIdentifier}',
          useRefreshTokens: true
        });

    Was this helpful?

    /

  3. リフレッシュトークンのローテーション設定を構成します。例:

    PATCH /api/v2/clients/{client_id}
        {
          "refresh_token": {
            "rotation_type": "rotating",
            "expiration_type": "expiring",
            "token_lifetime": "2592000",
            "leeway": 3
          }
        }

    Was this helpful?

    /
    属性 説明
    rotation_type テキスト文字列:rotatingまたはnon-rotating
    expiration_type テキスト文字列:expiringまたはnon-expiring
    token_lifetime リフレッシュトークンのローテーションが有効化されている場合、リフレッシュトークンのデフォルトの有効期限は30日(2,592,000秒)です。1年(31,557,600秒)までを構成することができます。トークンがローテーションされても、ライフタイムは延長されません。
    leeway 潜在的なネットワークの同時並行で、クライアントが同じリフレッシュトークンを使って再試行をした際にトークンが無効となり、動作不能になることを考慮して、指定の時間内に同じリフレッシュトークンが使用されることを許容します。デフォルトでは無効に設定されています。この余裕時間は秒単位で構成します。

再利用の自動検出

前に無効になったトークンが使用されている場合は、その無効になったトークンが発行された以降に発行されたリフレッシュトークンの全セットが付与と同様に直ちに失効され、ユーザーの再認証が必要になります。

もっと詳しく