Skip to main content
リフレッシュトークンメタデータセッションメタデータ を併用すると、ユーザーの Auth0 セッションのライフサイクル全体を通じて維持されるデータを作成・保存できます。この記事では、次のユースケースの例を紹介します。 詳しくは、A guide to Auth0 Session and Refresh Token Metadata を参照してください。
Auth0 のセッションメタデータは安全なデータストアではないため、機密情報の保存には使用しないでください。これには、シークレットや、社会保障番号やクレジットカード番号などの高リスクな個人識別情報 (PII) が含まれます。Auth0 を利用するお客様には、メタデータに保存するデータを慎重に評価し、アイデンティティ/アクセス管理の目的に必要なものだけを保存することを強く推奨します。詳しくは、Auth0 General Data Protection Regulation Compliance を参照してください。

永続的なカスタムクレームを作成する

リフレッシュトークンメタデータとセッションメタデータを組み合わせることで、ID トークンや access トークンに含まれる情報を拡張するための、永続的なカスタムクレームを作成できます。 永続的なカスタムクレームを使用すると、次のようなアプリケーション固有のデータにアクセスできます。
  • ユーザーロール
  • 権限
  • テナントID
  • リフレッシュトークン交換をまたいで認可やパーソナライズに必要となるその他の属性
post-login Action トリガーを設定して永続的なカスタムクレームを作成し、api.refreshToken.setMetadata() を使用してそれらをリフレッシュトークンメタデータに割り当てます。
custom claim Action example
リフレッシュトークンの交換時には、後続のpost-login Action トリガーでevent.refresh_token.metadataオブジェクトを使ってこれらのカスタムクレームにアクセスし、api.idToken.setCustomClaim()およびapi.accessToken.setCustomClaim()を使って、新たに発行されるリフレッシュトークンに適用できます。
1 つのpost-login Actionで、event.request.body.grant_typeオブジェクトを使ってクレームの保持を管理しながら、異なるgrant_typeのシナリオに対応できます。event.refresh_tokenオブジェクトは、リフレッシュトークンの交換時にのみ読み取り専用で利用できます。

一意のセッション ID を作成する

リフレッシュトークンメタデータとセッションメタデータを組み合わせることで、一意のセッション ID を作成し、refresh token rotations の間も含めて、ユーザーのセッション全体を通して維持される永続的なセッション識別子を実装できます。 一意のセッション ID を使用すると、次のことができます。
  • デバッグや監査のために、ユーザーのセッションを正確に記録する。
  • アプリケーションが内部セッションの状態を追跡するための仕組みを提供する。
  • API で、きめ細かなログ記録、レート制限、コンテキストに応じた認可の判断を可能にする。
  • 複数のトークンライフサイクルにまたがって、一貫した UX を実現する。
post-login Action トリガーを設定して一意のセッション ID を作成し、api.session.setMetadata() オブジェクトと api.refreshToken.setMetadata() オブジェクトを使用して、ユーザーのセッションに割り当てます。 api.idToken.setCustomClaim() オブジェクトと api.accessToken.setCustomClaim() オブジェクトを使用して、一意のセッション ID をカスタムクレームとして ID トークンとアクセストークンに追加します。
unique session ID Action example
リフレッシュトークン交換時には、後続の post-login Action トリガーで event.refresh_token.metadata オブジェクトを通じてこれらのカスタムクレームにアクセスし、api.idToken.setCustomClaim() および api.accessToken.setCustomClaim() を使用して、新たに発行されるリフレッシュトークンにそれらを適用できます。

テナント識別子を作成する

リフレッシュトークンメタデータとセッションメタデータを組み合わせることで、永続的なテナント識別子を作成できます。これにより、1 つのアプリケーションインスタンスで複数の顧客組織に対応するマルチテナントアプリケーションにおいて、ユーザーのセッションの全期間を通じてテナント識別子を保持できます。 永続的なテナント識別子を使用すると、次のことが可能になります。
  • 動的なアクセス制御を追加し、アプリケーションや API でテナント固有の権限を簡単に適用する
  • ユーザーの現在のテナントコンテキストに応じたコンテンツや機能を提供し、最適なユーザー体験を実現する
  • Auth0 内でテナントの識別と伝播を一元化し、マルチテナントロジックを簡素化する
  • すべてのトークンで一貫したテナントコンテキストを確保することで、テナント間での意図しないデータ露出を防ぎ、セキュリティを強化する
  • API 呼び出しやトークン更新のたびにテナントコンテキストを判定するためのデータベースクエリの繰り返しや複雑なロジックを減らし、スケーラビリティを向上させる
post-login Action トリガーを設定して、認証リクエスト時に渡される ext-tenantId の値をアプリケーションに問い合わせてユーザーのアクティブなテナントを特定するか、地理的位置情報からテナントを推定するか、またはユーザーに使用するテナントを選択してもらいます。 テナントが特定されたら、api.session.setMetadata()api.refreshToken.setMetadata() を使用してテナント識別子の値をユーザーのセッションに割り当て、api.idToken.setCustomClaim()api.accessToken.setCustomClaim() を使用して、その値を ID トークンおよびアクセストークンのカスタムクレームとして追加します。
tenant identifier Action example
リフレッシュトークン交換時には、後続の post-login Action で event.refresh_token.metadata オブジェクトを使用してこれらのカスタムクレームにアクセスし、api.idToken.setCustomClaim() および api.accessToken.setCustomClaim() を使って、新たに発行されるリフレッシュトークンに適用できます。

アップストリーム ID プロバイダー (IdP) からの一時データを管理する

リフレッシュトークンメタデータとセッションメタデータを併用すると、ユーザーの Auth0 プロファイルに永続保存することなく、ユーザーのセッション全体を通してアップストリーム ID プロバイダー (IdP) からの一時的なデータやコンテキストデータを管理できます。 一時データを使用すると、次のことが可能です。
  • 一時データやセッション固有のデータが保存されないようにして、クリーンなユーザープロファイルを維持する
  • 永続的なユーザープロファイルにスキーマ変更やデータ肥大化を強いることなく、さまざまなIDプロバイダーの多様なデータ要件に対応し、柔軟性を高める
  • 一時データを必要な期間だけ保存することで、データプライバシーおよび保持ポリシーへの準拠を容易にし、コンプライアンスを向上させる
  • Auth0 Actions とメタデータがデータのライフサイクルを管理するため、一時的なIDプロバイダーデータの処理を簡素化し、開発負荷を軽減する
post-login Action トリガーを設定し、event.requestevent.userevent.context オブジェクトに含まれるユーザープロファイルデータを識別します。 どのデータが一時データまたはコンテキストデータに当たるかを判断し、api.session.setMetadata()api.refreshToken.setMetadata() オブジェクトを使用してそれをユーザーのセッションに割り当てます。また、api.idToken.setCustomClaim()api.accessToken.setCustomClaim() オブジェクトを使用して、その一時データを ID トークンとアクセストークンにカスタムクレームとして追加します。
transient data Action example
リフレッシュトークンの交換時には、後続のpost-login Actionトリガーでevent.refresh_token.metadataオブジェクトを通じてこれらのカスタムクレームにアクセスし、api.accessToken.setCustomClaim()オブジェクトを使用して、新たに発行されるリフレッシュトークンにそれらを適用できます.

セキュリティ強化と不正検知

リフレッシュトークンメタデータとセッションメタデータを組み合わせることで、リフレッシュトークンのローテーションやサイレント認証のリクエストを含め、ユーザーのセッション全体を通じてコンテキスト情報を追跡・比較できるようになり、適応型セキュリティを実装できます。 適応型セキュリティを実装すると、次のことが可能になります。
  • ユーザーのコンテキストデータにおける不審な変化を自動的に検出して対応することで、脅威を早期に検知し、セッションハイジャックや不正アクセスのリスクを低減できます。
  • 正当なユーザーに対する負担を減らし、実際に異常が検出された場合にのみMFAや追加の確認を求めることで、一律にMFAを要求する場合と比べてユーザー体験を向上できます。
post-login Action トリガーを設定して、デバイスフィンガープリント、地理的位置情報、ネットワーク属性、行動属性などのコンテキストに関するユーザーデータを特定します。比較用のコンテキストデータは、api.session.setMetadata()オブジェクトを使用してユーザーのセッションに保存します。
security detection Action example
リフレッシュトークン交換時またはサイレント認証時には、後続のpost-login Action トリガーでリスク評価と適応型の対応を適用できます。

Management API を使用してメタデータにアクセスする

Auth0 Management API の GET /api/v2/refresh-tokens/{id} および /api/v2/sessions/{id} エンドポイントを使用すると、リフレッシュトークンまたはセッションのメタデータに保存されたデータを取得できます。 レスポンスには、保存されたデータを含む metadata フィールドが含まれます。

詳しくはこちら