Skip to main content
Auth0 には、Auth0 ユーザープロファイルにメタデータを保存するための豊富な仕組みがあります。ユーザーのログインフローの一部として user_metadataapp_metadata を変更できるよう、post-login トリガーを設定できます。Post-login トリガーは、ユーザープロファイルにアプリケーション固有のデータを保存したり、ユーザー操作のログを記録したり、 属性をメタデータフィールドにマッピングしたり、将来のログインで再利用するためにコストの高い処理結果をユーザープロファイルにキャッシュしたりする用途に役立ちます。 post-loginapi オブジェクトでは、このトリガーで実行できる一般的な操作が提供されています。ユーザーメタデータを管理するには、api.user.setAppMetadata メソッドと api.user.setUserMetadata メソッドを使用します。たとえば、特定のユーザーに対して同じ処理が複数回実行されないようにするには、次のような Action を検討してください。
ここでは、このユーザーに対してコストの高い処理をすでに実行済みかどうかを確認するため、Action の冒頭にチェックを追加しています。メタデータフィールドが存在する場合は、その時点で関数から return します。 Action の最後では、api.user.setAppMetadata を呼び出して、ユーザーオブジェクトにメタデータを保存したいことを示します。各トリガーの実行の শেষে、Actions はユーザープロファイルを 1 回の操作で更新します。setUserMetadata への呼び出しが複数回行われた場合でも、それらが同じフロー内の異なる Actions で行われていたとしても、Actions がユーザープロファイルを更新するのは 1 回だけです。つまり、トリガーの実行の最後に更新されます。
setUserMetadata または setAppMetadata が複数回呼び出された場合でも、異なる Actions によるものであっても、トリガーの実行の最後に 1 回のユーザープロファイル更新としてまとめて処理されます。

ベストプラクティス

Auth0のプロファイルに大量のデータを保存しすぎないよう注意してください。これらのデータは認証および認可のために使用することを想定しており、またユーザーは自分の user_metadata フィールドを編集できるため、そこに機密データを保存してはいけません。Auth0 のメタデータや検索機能は、マーケティング調査のような用途や、検索や更新が高頻度で発生する用途向けには設計されていません。この目的で Auth0 を使用すると、システムでスケーラビリティやパフォーマンスの問題が発生する可能性が高くなります。より適切なのは、データは外部システムに保存し、必要に応じてバックエンドシステムがそのデータを取得できるよう、Auth0 には参照先 (user ID) のみを保存する方法です。

レート制限

ユーザーおよびアプリのメタデータの設定はテナントのレート制限の対象となるため、ログインのスループットに影響する場合があります。
ユーザープロファイルの更新に対する呼び出しは 1 回だけでも、その操作はテナントの「Write User」レート制限の対象です。メタデータの更新時にレート制限に達した場合、429 HTTP ステータスコードが返される限り、Actions はリクエストを再試行します。再試行の間隔は、429 レスポンスの一部として返される X-RateLimit-Reset ヘッダーの値によって決まります。

リダイレクト

api.redirect.sendUserTo() によってリダイレクトが実行されると、保留中のユーザーまたはアプリのメタデータの更新は、ユーザーが外部サイトにリダイレクトされる前にユーザープロファイルに適用されます。詳しくは、Actions を使ったリダイレクトを参照してください。

詳しくはこちら