post-login)トリガーに関連付ける必要があります。以下の手順に従い、アクションを元のルールと同じ順序にしておくと、機能は同じになります。
移行を計画する
移行を計画するときのヒント
- アクションとルールを1対1にして、機能のオン・オフやテストをひとまとめに実行できるようにします。
- ユーザーメタデータにフラグを使って、コストがかかる操作や1回限りの操作が重複しないようにします。
- Rulesのパイプラインの最後から始めて、逆方向に作業します。アクティブなRulesはアクションのデプロイ前に実行されるため、構築の際にはRules内にいくつかのロジックを維持させて、他のロジックをActionsでテストすることができます。
- 変更は、影響やトラフィックが最も少ない時間帯や時期に行います。
- 移行期間が無効なログインや保護の欠落に繋がるようであれば、一時的にログインページをカスタマイズして、ログインを停止することを検討します。
- 移行のスクリプトを作成し、一括または繰り返してテストと実装が行えるように、Auth0 Deploy CLIの使用を考慮します。
制限事項を理解する
- アクションには、ルールの場合のように、Management APIのアクセストークンやグローバル
auth0オブジェクトへのアクセスは提供されません。Management API呼び出しを引き続き行う方法については、「コードの変換」セクションを参照してください。
コードを変換する
コードを変換するときのヒント
- 一般的に、Actionsの
eventオブジェクトについて、Rulesのuserとcontextオブジェクトの読み取り専用プロパティを確認します。apiオブジェクトの機能について、Actionsがシステムに及ぼす副次的な影響(ログインの失敗、ユーザーメタデータの更新など)を確認します。 - コードを書くときは、Auth0 DashboardのActions Code Editorを使います。エラーがハイライトされたり、オートコンプリート機能によって提案が自動入力されたりするので、便利です。
- 稼働させる前に、新しいActionsのテストをステージング環境やテスト環境で念入りに行います。
ルールコードを新しいアクションにコピーする
ルールのコードを新しいアクションにコピーし、Auth0 DashboardのActionsコードエディターで使用することをお勧めします。コードにある未解決の問題が特定できます。
- 運用テナントにログインし、変換元となるルールのコードをコピーします。
- 非運用テナントに切り替えて、[Auth0 Dashboard] > [Actions(アクション)] > [Library(ライブラリ)]に移動します。
-
[Build Custom(カスタムの構築)] を選択した後、
- 変換するルールの名前と一致するアクションの 名前 を入力します。
- トリガー を見つけて、 ログイン/ログイン 後を選択します。
- [Runtime(ランタイム)] で、 [Node 22] を選択します。
- [Create(作成)] を選択します。
-
アクションコードエディターのコードブロックで、エクスポートされた
onExecutePostLogin関数の下に変換するルールコードを貼り付けます。 - コードを関数に移動するときに、この記事で後述している変更を加えます。
関数宣言を変更する
ユーザー、コンテキスト、およびコールバックパラメータを持つ単純な宣言済み関数を使用しますが、アクションは特定の名前にエクスポートされた関数を使用します。以下の変更を加えます。現在のところ、表示されるエラーは無視してください。
変更前
ユーザーデータへのアクセス方法を変更する
userオブジェクトに保存されます。アクションでは、このデータはeventオブジェクトのuserプロパティにあります。既存のプロパティの大部分は、この新しい場所でアクセスできます。
eventオブジェクトのプロパティで保管・変更されたデータは、他のアクションでは使用できません。コンテキストデータへのアクセス方法を変更する
contextオブジェクトに保存されます。アクションの場合、このデータは再形成され、eventオブジェクトに移動されました。プロパティの多くはそのまま移行されましたが、わかりやすくするために一部が結合されました。
eventオブジェクトのプロパティで保管・変更されたデータは、他のアクションでは使用できません。context.idTokenやcontext.multifactorなど、プロパティにデータを設定することでルールがコア機能をトリガーする場合は、そのようなユースケースについて説明している以下のセクションをお読みください。依存関係を変換する
requireステートメントにバージョン番号を含めることを要求する方法で依存関係が含まれます。アクションでは、より標準的なCommonJS構文が使用され、コードエディターの外部でバージョンを示す必要があります。
ルールでは、特定のパッケージの特定のバージョンのみが許可され、新しいパッケージとバージョンを追加するにはAuth0への要求が必要です。アクションでは、npmレジストリで利用可能な任意のパッケージを要求できます。
npmモジュールが最新バージョンでないなら、今こそアップデートする絶好の機会です!- ルールコード内で
requireステートメントを検索します。 - バージョン番号を削除しますが、これらの番号はメモしておいてください。
- 依存関係がコアNodeJSモジュールでない場合は、「初めてアクションを作成する」の「依存関係を追加する」セクションの手順に従って依存関係を追加してください。依存関係がコアNodeJSモジュールである場合は、追加する必要はありません。
- 見つかった
requireステートメントをfunction宣言の外に移動します:
コールバックを変換する
callback()関数を呼び出して、ログインに失敗した場合はエラーを渡す必要があります。逆に、アクションは成功時に返したり、ログインに失敗した場合はメッセージとともにapiメソッドを呼び出したりできます。ルール内のcallback()のすべてのインスタンスは削除するか、失敗した場合はapi.access.deny()に置き換える必要があります。ルールとアクションの両方で、特定の条件で処理を停止する必要がある場合は、returnステートメントを使用します。
変更前
シークレットの処理を変更する
- 操作中の特定のアクションに必要な値を保存します。
- アクション内からアクセスする必要がある値ごとにシークレットを追加します。方法については、「初めてアクションを作成する」の「 シークレットを追加する 」セクションをお読みください。
- コードを変換します。
カスタムクレームをトークンに変換する
contextオブジェクトのプロパティですが、アクションではapiオブジェクトのメソッドが使用されます。
変更前
多要素トリガーを変換する
contextオブジェクトのmultifactorプロパティを変更することで、多要素認証をトリガーできます。アクションでは、これはapiオブジェクトのメソッドを使用して実行されます。
変更前
ユーザーメタデータの更新を変換する
user_metadataプロパティとapp_metadataプロパティを更新するには、Management APIの呼び出しが必要であり、レート制限エラーが発生する可能性があります。ただし、アクションは複数のユーザーメタデータの変更を示す方法を提供しますが、Management APIを呼び出すのは1回だけです。
変更前
api.user.setUserMetadataまたはapi.user.setAppMetadataを呼び出す必要があります。アクションでは、1つまたは複数のアクションにわたってこれらの関数を複数回呼び出すと、フローが完了したときに1つのManagement API呼び出しが行われます。
他のManagement API呼び出しを変換する
- M2Mアプリケーションを登録し、Management APIに対して認可します。
- アクションに クライアントID と クライアントシークレット を保存します。
- Management APIのアクセストークンを取得します。
- Management APIを呼び出します。
リダイレクトを変換する
あらゆるリダイレクトをアクションで適切に行う方法について、このガイドで説明することはできません。詳細については、「アクションを使ったリダイレクト」をお読みください。
現在のSSOクライアント参照を変換します
context.ssoオブジェクトは、現在のセッションとそれを使用しているクライアントに関する詳細を提供します。詳細については、ルールのコンテキストオブジェクトプロパティのcontext.ssoエントリを参照してください。同様の情報は、アクションのevent.sessionオブジェクトでも入手できます。
変更前