メインコンテンツへスキップ
リフレッシュトークンは、漏洩すると新しいアクセストークンの取得に使用される危険性があるため、攻撃者の恰好の標的となります。このリスクを軽減するために、Auth0では、 リフレッシュトークンのローテーションと自動再利用検知の使用をお勧めします。リフレッシュトークンのローテーションは、事前設定されたライフタイムを過ぎてから有効期限を迎えるリフレッシュトークンを発行します。期限が切れると、ユーザーは同じファミリーの新しいリフレッシュトークン、ファミリーIDを共有するリフレッシュトークン、または新しいアクセストークンとリフレッシュトークンのペアを取得します。詳細については、「リフレッシュトークンのローテーション」をお読みください。 またはAuth0 を使用して、2つのリフレッシュトークンのライフタイム設定(絶対有効期限と非アクティブ有効期限)を有効にして構成することができます。絶対有効期限と非アクティブ有効期限を組み合わせて使用すると、ビジネスニーズに合ったセキュリティとユーザーエクスペリエンス間にバランスを作り出すことができます。
  • Maximum Lifetime(最大ライフタイム) :リフレッシュトークンまたはリフレッシュトークンファ​ミリーのライフタイムを設定します。設定後、ユーザーが新しいアクセストークンを取得するには、認​証し直す必要があります。この設定を無効にすると、最大ライフタイムが無制限になります。
  • Idle Lifetime(アイドルライフタイム) :ユーザーが一定期間にアプリケーションでアクティブでない場合、発行されたリフレッシュトークンのアイドルライフタイムが期限切れになるようにします。

Dashboardを使用する

  1. [Dashboard]>[Applications(アプリケーション)]に移動します。
  2. 構成したいアプリケーションを選択します。
  3. [Settings(設定)] タブに移動します。
  4. [Refresh Token Expiration(リフレッシュトークンの有効期限)] で、[Set Idle Refresh Token Lifetime(リフレッシュトークンのアイドルライフタイムを設定する)] を有効にします。有効にすると、リフレッシュトークンは指定されたリフレッシュトークンのアイドルライフタイムに​よって期限切れとなり、それ以降はトークンが使用できなくなります。ローテーションが有効な場合は、ライフタイム期限を設定する必要があります。
    Dashboard アプリケーション アプリケーション設定タブ リフレッシュトークンの有効期限
  5. [Idle Refresh Token Lifetime(リフレッシュトークンのアイドルライフタイム)] を秒単位で入力します。リフレッシュトークンは指定された期間が過ぎると期限切れとなり、新しいアクセストークンの取得に使用できなくなります。ローテーションが有効な場合には、リフレッシュトークンのアイドルライフタイムも新しいトークンの取得に適用されます。
  6. [Idle Refresh Token Lifetime(リフレッシュトークンのアイドルライフタイム)] を秒単位で入力します。リフレッシュトークンは指定された期間が過ぎると期限切れとなり、新しいアクセストークンの取得に使用できなくなります。ローテーションが有効な場合には、リフレッシュトークンのアイドルライフタイムも新しいトークンの取得に適用されます。
    ライフタイム
    デフォルト2,592,000秒(30日)
    最小1秒
    最大31,557,600秒(1年)
    うるう年を考慮して、1年は365.25日と計算されます。
  7. [Inactivity Expiration(非アクティブ有効期限)] を有効にします。有効にすると、リフレッシュトークンは指定された非アクティブ有効期限で期限切れとなり、それ以降はトークンが使用できなくなります。
  8. [Maximum Refresh Token Lifetime(リフレッシュトークンの最大ライフライム)] を秒単位で入力します。リフレッシュトークンが指定された期限内に交換されない場合には、リフレッシュトークンが期限切れとなり、新しいアクセストークンの取得に使用できなくなります。有効期限は、リフレッシュトークンが期限内に新しいアクセストークンと交換されるたびに更新されます。
  9. [Inactivity Expiration(非アクティブ有効期限)] を有効にします。有効にすると、リフレッシュトークンは指定された非アクティブ有効期限で期限切れとなり、それ以降はトークンが使用できなくなります。
  10. [Maximum Refresh Token Lifetime(リフレッシュトークンの最大ライフライム)] を秒単位で入力します。リフレッシュトークンが指定された期限内に交換されない場合には、リフレッシュトークンが期限切れとなり、新しいアクセストークンの取得に使用できなくなります。有効期限は、リフレッシュトークンが期限内に新しいアクセストークンと交換されるたびに更新されます。
    ライフタイム
    最小1秒
    最大31,557,600秒(1年)
  11. [Save Changes(変更の保存)] をクリックします。

Management APIを使用する

絶対ライフタイムと非アクティブ有効期限の設定は、Management APIの/api/v2/clients/エンドポイントのペイロードで構成することができます。下の例では、ローテーションされないリフレッシュトークンの有効期限を設定します。
PATCH /api/v2/clients/{id}
{
  "refresh_token": {
      "rotation_type": "non-rotating",
      "expiration_type": "expiring",
      "token_lifetime": 2592000,
      "infinite_token_lifetime": false,
      "idle_token_lifetime": 604800,
      "infinite_idle_token_lifetime": false
  }
}

サポートと制限事項

  • リフレッシュトークンの絶対タイムアウトは発行時に決められ、ライフタイムを通して固定されたままになります。対照的に、アイドル有効期限は現在の設定を反映し、リフレッシュトークンの交換が成功するたびに更新されます。
  • アプリケーションにリフレッシュトークンの最大ライフライムを構成すると、そのアプリケーションが発行した有効期限のないリフレッシュトークンは、リフレッシュトークンの交換が成功した後、有効期限を持つリフレッシュトークンに変わります。
  • 有効期限のないリフレッシュトークンが有効期限を持つリフレッシュトークンになると、有効期限のないリフレッシュトークンには戻せません。
  • オプトイン方式でリフレッシュトークンの有効期限の機能を使用することができます。手順や処理は一切必要ありません。既存のリフレッシュトークンに影響はありません。
  • 1年の制限を超える(最長5年まで)必要がある場合は、延長させることもできます。詳細については、Auth0のテクニカルアカウントマネージャーまでお問い合わせください。
  • リフレッシュトークンの有効期限は以下のフローで動作します。
  • Auth0 SDKはすべて、リフレッシュトークンの有効期限に対応しています。
  • リフレッシュトークンの有効期限機能は、OAuth 2.0 Security BCP recommendationsに準拠しています。
OAuth BCPでは、ブラウザーベースのアプリケーションに対して発行されたリフレッシュトークンに有効期限があること、送信者に対して制約を設けるか、各要求でトークンをローテーションさせることが求められます。そのため、SPAは、デフォルトでローテーションを行い、無期限のリフレッシュトークンを サポートしていません

もっと詳しく

I