- API レスポンスや中間計算結果などのデータを Action 間で共有する。
- 異なる Action で同じ情報を再取得したり、再計算したりする必要をなくす。
- カスタムトークン交換 Action から Post-Login Actions に情報を渡す。
開発でトランザクションメタデータを使用する前に、制限事項を確認することをお勧めします。詳しくは、Actions の制限事項 を参照してください。
仕組み
トランザクションメタデータを保存するためのキーと値のペアを設定するには、post-login API objectapi.transaction.setMetadata を使用します。
保存されたキーと値のペアにアクセスするには、post-login Event object event.transaction.metadata を使用します。これにより、同じ Action 内、または 1 回の実行における post-login トリガーの後続の Actions からアクセスできます。
api オブジェクトと event オブジェクトは、カスタムトークン交換 Actions でも使用できます。
API オブジェクトと Event オブジェクトは、次のパラメーターを受け取ります。
Actions の記述について詳しくは、Write Your First Action を参照してください。
遅延
Actions Transaction Metadata を使用すると、わずかな遅延が追加で発生する可能性があります。遅延の大きさは metadata のペイロードサイズに比例し、Action の中断が発生する場合に影響します。たとえば、 をトリガーする場合、Actions からリダイレクトする場合、または Forms をレンダリングする場合は、ストレージからデータを再読み込みする必要があるため、遅延が問題になる可能性があります。 ただし、この遅延の可能性は、一連の Actions で必要なデータを取得するために冗長な外向き HTTP リクエストを行う場合に比べれば、最小限にとどまるはずです。例
メタデータにすぐアクセスする
トランザクションのメタデータにキーと値のペアを設定し、その値にすぐアクセスできます。対応している値を設定する
string、number、boolean 型の値を設定できます。
値をシリアライズする
制限事項の範囲内で、値はstringとしてシリアライズします。
object型またはarray型の値は設定できませんが、stringとしてシリアライズすることはできます。Actions 間で値を共有する
同じ実行シーケンス内の Actions 間で、キーと値のペアを共有します。 Action 1api オブジェクトの setMetadata メソッドを使って、hello キーに Auth0 という値を設定します。
event オブジェクトの transaction.metadata プロパティを使用して設定された値にアクセスし、トランザクションメタデータ内の hello キーに対する Auth0 の値をログに記録します。
カスタムトークン交換からPost-Loginへ値を共有する
カスタムトークン交換 Actionでキーと値のペアを設定し、同じトランザクション内のPost-Login Actionで読み取ります。たとえば、カスタムトークン交換Actionがsubject_tokenまたはactor_tokenからすでに取得・処理した情報に基づいて、Post-Login Actionでカスタムクレームを設定する場合に便利です。
カスタムトークン交換Action
subject_tokenからクレームをデコードし、apiオブジェクトのsetMetadata()メソッドを使用してトランザクションメタデータに設定します。
event オブジェクトの transaction.metadata プロパティを使用して、カスタムトークン交換 Action で設定された subject_locale の値を取得し、カスタムクレームを設定します。このクレームは、アクセストークン、ID トークン、またはその両方に追加できます。
メタデータを更新する
既存のキーに別の値を設定して、メタデータを更新します。 アクション 1 トランザクションのメタデータのキーと値をそれぞれcustom_tx_id と xyz123 に設定します。
custom_tx_id、値を xyz123 として記録します。次に、custom_tx_id を abc456 に設定し、トランザクションメタデータ内の custom_tx_id の最新の値でもう一度記録します。
custom_tx_id の値として abc456 を記録します。
メタデータを削除する
各キーの値をnull にすることで、トランザクションメタデータの値を削除できます。
アクション 1
トランザクションメタデータに custom_tx_id を設定します。
custom_tx_id を null に設定し、その null 値をログに記録します。
custom_tx_id に null 値を記録します。
外部サイトへのリダイレクト時に値を保持する
リダイレクト中も、トランザクションメタデータを保持します。ユーザーが認証フローを再開すると、その値を利用できます。 Action 1 トランザクションメタデータにcustom_tx_id を設定します。
custom_tx_id を持つトークンを送信して、外部サイトにリダイレクトします。次に、トランザクションのメタデータ内の custom_tx_id の値と、外部サイトに渡され、別のトークンのペイロードで送り返されてきた値を比較します。
Forms のレンダリング時に値を保持する
Actions を使用して Forms をレンダリングする と、トランザクションメタデータの値は保持され、ユーザーが認証フローを続行する際にも利用できます。 Actions で Forms を使用する方法について詳しくは、Actions を使用して Forms をレンダリングする を参照してください。 Action 1 トランザクションメタデータにcustom_tx_id を設定します。
custom_tx_id をログに出力します。
Forms と値を共有する
Actions を使って Forms をレンダリングし、トランザクションのメタデータの値を Form に渡せます。 Action 1 トランザクションのメタデータにcustom_tx_id を設定します。
custom_tx_id を vars パラメーターとして渡し、Form をレンダリングします。次に、Actions の実行を続行する際に、トランザクションメタデータ内の custom_tx_id の値と Form に渡した値を比較します。