利用可否は Auth0 プランによって異なります
この機能を利用できるかどうかは、Auth0 プランまたはカスタム契約の内容によって異なります。詳しくは、Pricingをご覧ください。
- 認証: Auth0 でデータベースをとして使用し、ユーザーを認証します。 (これはレガシー認証と呼ばれます。)
- ユーザーのインポート: 自動移行 (段階的移行または遅延移行) を使用します
- Auth0 テナントへのプロキシアクセス: Auth0 のマルチテナントアーキテクチャを使用します。
-
auth0戦略で Create connections エンドポイントを使用します。 -
Auth0 Dashboard > Authentication > Database に移動し、接続を作成して、データベースアクションスクリプトを編集できるよう Use my own database オプションを有効にします。

仕組み

ベストプラクティス
アクションスクリプトは無名関数として実装することもできますが、無名関数を使用すると、例外エラー発生時に生成されるコールスタックを解釈しづらくなり、デバッグが難しくなります。そのため、各アクションスクリプトには関数名を付けることを推奨します。
レガシー認証シナリオ
カスタムデータベース接続は、Universal Login ワークフロー以外でも使用されます。たとえば、レガシー ID ストア内のユーザーに対してパスワード変更処理が行われると、接続の
changePassword アクションスクリプトが呼び出されます。自動移行シナリオ
ベストプラクティス
自動移行シナリオでのユーザー作成は、通常
login アクションスクリプトの完了後に行われます。そのため、レガシー ID ストアからのユーザー削除をインライン操作 (つまり login スクリプト内) として実行しようとするのではなく、削除は独立したプロセスとして実行することを推奨します。これにより、移行プロセス中にエラーが発生した場合のユーザーの誤削除を防ぐことができます。login および/または getUser スクリプトが実行され、ユーザーが再びレガシー ID ストアから移行される可能性があります。
ベストプラクティス
login または getUser が完了する前、かつ最終的にレガシー ストアから削除する前に、レガシー ユーザー ID を移行済みとしてマークすることを推奨します。サイズ
100 kB の上限には、
require 文で参照される npm モジュールは含まれません。環境
npm モジュール
npm モジュールを使用すると、アクションスクリプトの実装コード全体のサイズを削減できるだけでなく、あらかじめ用意された幅広い機能を利用できます。
一般公開されている多くの npm モジュールは、そのままサポートされています。この一覧は、潜在的なセキュリティ上の懸念がないかを確認したうえでまとめられています。標準ではサポートされていない npm モジュールが必要な場合は、Auth0 サポートポータル または Auth0 の担当者を通じてリクエストできます。Auth0 は、その適合性を判断するためにリクエストを評価します。現在、Auth0 ではプライベートリポジトリーの npm モジュールの使用はサポートされていません。
変数
configuration オブジェクトを介してアクセスできます。詳細については、Create Custom Database Connections の「Add Configuration Parameters」セクションを参照してください。
ベストプラクティス
configuration オブジェクトは読み取り専用として扱い、外部 ID ストアへのアクセスに使用する認証情報や API キーなどの機密情報の保存に使用してください。これにより、セキュリティ上重要な値をアクションスクリプトにハードコードすることを防げます。configuration オブジェクトは、テナント固有の値を持つ変数を定義できるため、採用している任意の Software Development Life Cycle (SDLC) 戦略をサポートする目的にも使用できます。これにより、実行するテナントに応じて変わる可能性のある値をアクションスクリプトにハードコードすることを防げます。
global オブジェクト
global オブジェクトを利用でき、同じコンテナインスタンス内で実行されるすべてのアクションスクリプトからアクセスできます。global オブジェクトは、そのコンテナに固有のグローバル変数として機能し、コンテナインスタンス内で実行されるすべてのアクションスクリプトで使用する情報や関数を定義するために使用できます。
つまり、global オブジェクトを使って、ユーザー固有ではない高コストなリソースをキャッシュできます。たとえば、ユーザー固有ではない機能を提供するサードパーティの (ロギング) API 用の を保存できます。または、Auth0 で定義し、Client Credentials Flow を通じて取得した、独自のユーザー固有ではない API のアクセストークンを保存することもできます。
Webtask コンテナが再利用されるたびに、また新しい Webtask コンテナがインスタンス化されるたびに、そのコンテナで定義される global オブジェクトはリセットされます。したがって、コンテナに関連付けられた global オブジェクト内での代入宣言には、初期化処理も含める必要があります。
ベストプラクティス
パフォーマンスの柔軟性を確保するため、サーバーレス Webtask コンテナは Auth0 でアドホックにプロビジョニングされ、さらにさまざまな再利用ポリシーの対象にもなります。一般に、
global オブジェクトの寿命は 20 分を超えないものとして扱うことを推奨します。セキュリティ
カスタムAPI経由でレガシーIDストレージにアクセスする
ベストプラクティス
レガシーIDストア (データベース) への広範なアクセスをインターネット経由で単純に開放するのではなく、最小権限を実現するためのAPIを実装することを推奨します。
global オブジェクトにキャッシュして再利用できます。API では、必要なレガシー管理機能だけを実行する、限定された数の保護されたエンドポイント (たとえば read user、change password) を提供できます。
ベストプラクティス
デフォルトでは、認証に成功し、適切な audience を含めると、Auth0 は任意の API 向けのトークンを発行します。Rule を使用してアクセストークンの発行を制限し、レガシーIDストアAPIへのアクセスを制限することで、不正利用を防ぎ、
/authorize へのリダイレクトが傍受されて API の audience が追加されるようなケースを含む、複数の攻撃ベクトルを軽減できます。