post-login) トリガーに関連付ける必要があります。以下の手順に従って、Actionsを元のルールと同じ順序にしておけば、動作は変わりません。
移行を計画する
移行計画時のヒント
- Actions とルールは 1:1 で対応させ、機能をひとまとまりごとにオン / オフしてテストできるようにします。
- コストの高い処理や一度きりの処理が重複しないように、ユーザーのメタデータ内のフラグを使用してください。
- ルールのパイプラインの最後からさかのぼって進めてください。アクティブなルールはデプロイ済みの Actions より前に実行されるため、Actions で別のロジックを構築してテストしている間も、一部のロジックをルールに残しておけます。
- 変更は、影響やトラフィックが最も少ない時間帯に実施するようにしてください。
- 切り替えによって無効なログインや保護の抜け漏れが発生する可能性がある場合は、一時的に ログインページをカスタマイズ してログインを停止することを検討してください。
- Auth0 Deploy CLI を使用して移行をスクリプト化し、テストし、一括または段階的にすばやく実施することを検討してください。
制限事項を理解する
- Actions では、ルールのように Management API 用のアクセストークン やグローバルな
auth0オブジェクトへのアクセスは提供されません。Management API の呼び出しを引き続き行う方法については、Convert Code セクションを参照してください。
コードを変換する
コード変換時のヒント
- 一般的には、ルールの
userオブジェクトとcontextオブジェクトにある読み取り専用プロパティは、Actions のeventオブジェクト内で確認します。Actions がシステムに及ぼす副作用 (ログインの失敗やユーザーのメタデータの更新など) は、apiオブジェクトの関数で扱います。 - コードの作成には、Auth0 Dashboard の Actions Code Editor を使用してください。エラーのハイライト表示や自動補完候補の提示により、効率よく作業できます。
- 本番環境に移行する前に、新しい Actions を十分にテストし、ステージング環境またはテスト環境 でしっかり検証してください。
ルール のコードを新しい Action にコピーする
ルール のコードを新しい Action にコピーし、Auth0 Dashboard の Actions Code Editor を使用することをおすすめします。そうすることで、コードに残っている問題を特定しやすくなります。
- 本番環境のテナントにログインし、変換したい ルール からコードをコピーします。
- 非本番環境のテナントに切り替え、Auth0 Dashboard > Actions > Library に移動します。
-
Build Custom を選択し、次の操作を行います。
- 変換する ルール と同じ名前を Name に入力します。
- トリガー を探し、Login / Post Login を選択します。
- Runtime を探し、Node 16. を選択します。
- Create を選択します。
-
Actions Code Editor のコードブロックで、エクスポートされた
onExecutePostLogin関数の下に、変換したい ルール のコードを貼り付けます。 - コードをその関数内に移しながら、この記事の以降のセクションで説明する変更を加えます。
関数宣言を変更する
user、context、callback をパラメーターに取る通常の関数宣言を使用しますが、Actions では特定の名前でエクスポートされた関数を使用します。次のように変更してください。現時点では、表示されるエラーは無視して構いません。
変更前
ユーザーデータへのアクセス方法を変更する
user オブジェクト に格納されます。Actions では、このデータは event オブジェクト の user プロパティに格納されています。既存のプロパティの大半には、この新しい場所からアクセスできます。
event オブジェクトのプロパティに保存または変更されたデータには、他の Actions からアクセスできません。context データへのアクセス方法を変更する
context オブジェクト に格納されます。Actions では、このデータは再構成され、event オブジェクト に移されました。多くのプロパティはそのまま移行されていますが、わかりやすくするために一部は統合されています。
event オブジェクトのプロパティに保存または変更されたデータは、他の Actions からはアクセスできません。context.idToken や context.multifactor のように、これらのプロパティにデータを設定することでルールがコア機能をトリガーしている場合は、ユースケースに対応する以下のいずれかのセクションをお読みください。依存関係を変換する
require 文にバージョン番号を含める形で記述する必要があります。Actions では、より標準的な CommonJS 構文を使用し、バージョンはコードエディターの外で指定します。
ルールでは、使用できるのは特定のパッケージの特定バージョンに限られており、新しいパッケージやバージョンを追加するには Auth0 への申請が必要です。Actions では、npm Registry で利用可能な任意のパッケージを require できます。
npm モジュールが最新バージョンでない場合は、今がアップデートの絶好の機会です。- ルールのコード内で
require文を探します。 - バージョン番号を削除し、その番号はメモしておきます。
- 依存関係を Write Your First Action の「“Add a Dependency”」セクションの手順に従って追加します (依存関係が core NodeJS module でない場合。core NodeJS module の場合は、追加する必要はありません) 。
- 見つかった
require文をfunction宣言の外に移動します。
コールバックの変換
callback() 関数を呼び出し、ログインに失敗した場合はエラーを渡す必要があります。一方、Actions では成功時は return でき、ログインに失敗した場合はメッセージを指定して api メソッドを呼び出せます。ルール 内の callback() はすべて削除するか、失敗時には api.access.deny() に置き換える必要があります。ルールと Actions のどちらでも、特定の条件で処理を中断する必要がある場合は、return 文を使用します。
変更前
secrets の扱いを変更する
- 作業中の Action に必要な値を保存します。
- Action 内からアクセスする必要がある値ごとに Secret を追加します。方法については、初めてのActionを書く の Secret を追加する セクションを参照してください。
- コードを変換します。
トークン内のカスタムクレームを変換する
context オブジェクトのプロパティですが、Actions では api オブジェクト のメソッドを使用します。
変換前
多要素認証のトリガー設定を移行する
context オブジェクト の multifactor プロパティを変更することでトリガーできます。Actions では、api オブジェクトのメソッド を使用してこれを行います。
変換前
ユーザーメタデータの更新を変換する
user_metadata と app_metadata プロパティを更新するには Management API を呼び出す必要があり、レート制限 エラーが発生する可能性があります。一方、Actions では複数のユーザーメタデータの変更を指定しても、Management API の呼び出しは 1 回で済みます。
変換前
api.user.setUserMetadata または api.user.setAppMetadata を呼び出す必要があります。Actions では、1 つ以上のActionsにまたがってこれらの関数が複数回呼び出された場合でも、フローの完了後に実行される Management API 呼び出しは 1 回だけです。
他の Management API 呼び出しを変換する
- Machine-to-Machine アプリケーションを登録し、Management API へのアクセスを許可します。
- Client ID と Client Secret を Action に保存します。
- Management API 用のアクセストークンを取得します。
- Management API を呼び出します。
リダイレクトの変換
Actions でリダイレクトを正しく実装する方法をすべてこのガイドで扱うことはできません。詳しくは、Actions でのリダイレクトを参照してください。
現在の SSO クライアント参照を変換する
context.sso オブジェクトには、現在のセッションと、そのセッションを使用しているクライアントの詳細情報が含まれます。詳しくは、ルールにおけるコンテキストオブジェクトのプロパティ の context.sso の項目を参照してください。同様の情報は、Actions の event.session オブジェクトでも利用できます。
変更前