Skip to main content

使用状況

データベースアクションスクリプトは、カスタムデータベース接続用に作成する Node.js 関数です。ログイン、パスワード変更、ユーザー削除などの処理において、Auth0 が外部ユーザーストアとどのように連携するかを定義します。 データベースアクションスクリプトは、サーバーレス Webtask コンテナーのインスタンス内で、一連の JavaScript 関数として呼び出され実行されます。

完了と callback 関数

各データベースアクションスクリプトの関数シグネチャには、最後のパラメータとして callback 関数が含まれます。Auth0 はこの callback 関数を提供し、操作の完了を通知します。 すべてのデータベースアクションスクリプトでは、完了する直前に (暗黙的に、または return ステートメントで明示的に) callback 関数を必ず1回だけ呼び出す必要があります。callback 関数が実行されないと、実行が停止し、最終的にエラーが返されます。 トラブルシューティングのために、Error オブジェクトを callback 関数に渡すことで、データベースアクションスクリプトからエラーを返すことができます。
callback() のように引数なしで callback 関数を呼び出すことは、callback(null) を呼び出すことと同じです。

非同期 JavaScript

データベースアクションスクリプトでは、Promise オブジェクトや async functions など、非同期 JavaScript の機能をサポートしています。非同期機能を使用すると、アクションスクリプトからノンブロッキング操作を実行できます。 アクションスクリプトで非同期処理を使用する場合は、非同期処理が完了するまで callback 関数の呼び出しを延期する必要があります。非同期操作は、Webtask コンテナーの実行制限内に完了する必要があります。

公開 npm モジュール

npm モジュールを使用すると、アクションスクリプト全体のサイズを削減できるほか、幅広い既成機能を利用できます。 Auth0 のサーバーレス Webtask コンテナーでは、多くのサポート対象の公開 npm モジュールを使用できます。ほかのモジュールが必要な場合は、Auth0 の担当者に依頼するか、サポートチケットを起票してください。 アクションスクリプトでは、プライベートリポジトリの npm モジュールはサポートされていません。

提供されるアーティファクト

Webtask コンテナーと Auth0 (Auth0 テナント自体) から提供される複数のアーティファクトを含む、特定の環境を提供します。

global オブジェクト

Auth0 のサーバーレス Webtask コンテナーは、各 Auth0 テナントに関連付けられたプールからプロビジョニングされます。コンテナーインスタンス内で実行されるすべてのアクションスクリプトは、コンテナー固有のグローバル変数として機能する global オブジェクトにアクセスできます。 global オブジェクトを使用すると、コンテナーインスタンスで実行されるすべてのアクションスクリプトで使用する情報や関数を定義したり、サードパーティ (ログ記録) API 用の や、クライアント認証情報フローを介して取得した、Auth0 で定義した独自の API 用アクセストークンを保存するなど、取得コストの高いリソースをキャッシュしたりできます。
ユーザー固有の情報を global オブジェクトに保存しないでください。Auth0 ではアクションスクリプトの実行時にコンテナーアフィニティがないため、アクションスクリプトは実行中の任意のコンテナーインスタンス、またはプールに追加された新しいコンテナーインスタンスで実行される可能性があります。
global オブジェクト内のすべての代入宣言には、初期化処理も含める必要があります。これは、Webtask コンテナーが再利用またはインスタンス化されると global オブジェクトがリセットされるためです。

configuration オブジェクト

データベースアクションスクリプトで設定パラメータを指定すると、configuration オブジェクトを通じて、すべてのスクリプトから値を利用できるようになります。値は暗号化されます。 configuration オブジェクトは読み取り専用として扱い、アクションスクリプト内で値をハードコーディングしないために使用してください。たとえば、外部アイデンティティストアへのアクセスに使用する資格情報や API キーなどの機密情報を保存したり、tenant 固有の値を持つ変数を定義したりできます。

context オブジェクト

Organizationsを使用している場合、context オブジェクトを有効にすると、organizationデータをデータベースアクションスクリプトで利用できるようになります。これにより、idnamemetadata などの組織の詳細を含む追加の context 引数が、カスタムデータベーススクリプトに渡されます。 context オブジェクトは、一度有効にすると無効にできません。Delete スクリプトには、常に空の context オブジェクトが渡されます。

制限

  • アクションスクリプトの合計サイズは、import する npm モジュールを除き、100 KBを超えることはできません。サイズが大きいほど、Webtask プラットフォームでのパッケージ化および転送処理によるレイテンシーが増加し、システムのパフォーマンスに影響します。
  • 各アクションスクリプトのコンテナーには約20秒の実行時間制限があり、制限を超えるとコンテナーは再利用されます。これにより、アクションスクリプトで保留中の処理が終了し、エラーが発生する可能性があります。

Change Password データベースアクションスクリプトとテンプレート

Change Password スクリプトは、管理者またはユーザーがパスワード変更ワークフローを開始すると実行されます。

ユーザー作成データベースアクションスクリプトとテンプレート

Create スクリプトは、ユーザーが Universal Login からサインアップしたとき、または Auth0 Dashboard か Management API を通じてユーザーを作成したときに実行されます。

ユーザー削除データベースアクションスクリプトとテンプレート

Deleteスクリプトは、外部ユーザーストアから指定したユーザーを削除する必要があるときに実行され、同じ操作でAuth0からもユーザーを削除する場合に必要です。

Get User データベースアクションスクリプトとテンプレート

Get User スクリプトは、Auth0 がユーザーの存在状況を確認する必要があるときに実行されます。

Login データベースアクションスクリプトとテンプレート

ユーザーがログインしようとすると、Login スクリプトが実行されます。

Verify データベースアクションスクリプトとテンプレート

Verify スクリプトは、ユーザーが Auth0 の確認メール内のリンクをたどったときに実行されます。

Change Email データベースアクションスクリプトとテンプレート

Change Email スクリプトは、ユーザーのメールアドレスまたはメールアドレスの検証ステータスが変更されたときに実行されます。

Database Action Scripts のベストプラクティス

カスタムデータベースアクションスクリプト使用時のパフォーマンスと信頼性に関する推奨事項をご確認ください。