メインコンテンツへスキップ
RulesとHooksのサポート終了(EOL)日は2026年11月18日 であり、2023年10月16 日の時点で作成された新しいテナントは使用できなくなります。Hooksが有効な既存のテナントは、サポート終了までHooksを利用できます。今後はActionsに移行して、Auth0の機能を拡張することを強くお勧めします。Actionsを使用すると、豊富な情報やインラインドキュメント、パブリックnpmパッケージにアクセスして、外部統合を使って全体的な拡張エクスペリエンスを強化することができます。Actionsの詳細については、「Auth0 Actionsの仕組みを理解する」をお読みください。当社では、移行の参考資料として、RulesからActionsへの移行HooksからActionsへの移行に関するガイドを提供しています。また、専用の「Actionsへの移行」ページでは、機能の比較やActionsのデモ、その他のリソースを掲載して、円滑な移行をサポートしています。RulesとHooksの廃止の詳細については、当社のブログ記事「RulesとHooksの提供終了について」をお読みください。
RulesとHooksの機能は2026年にサポートの終了を予定しているため、新しいルールやフックは、アクションへの移行をテストするためだけに、開発環境内で作成してください。RulesからActionsへの移行方法については、「RulesからActionsに移行する」をお読みください。HooksからActionsへの移行方法については、「HooksからActionsに移行する」をお読みください。
独自のルールを作成して、特定の機能要件に対応させることができます。また、既存のルールテンプレートを編集するか、提供しているサンプルを使ってゼロから始めることもできます。Auth0は、目的の達成に役立つ既存のルールやルールテンプレートを取り揃えて提供しています。それらのリストについては、GitHubのルールリポジトリをご覧ください。

ルールの仕組み

ルールは、ユーザーがアプリケーションに対して認証するときに実行されるJavaScript関数です。認証プロセスが完了すると実行され、Auth0の機能をカスタマイズしたり拡張したりするために活用できます。セキュリティ上の理由により、ルールのコードは、サンドボックス内の他のAuth0テナントのコードとは分離して実行されます。ルールは、トークンのリフレッシュフロー時にも実行されます。詳細については、「リフレッシュトークン」をお読みください。 ルールを使用する場合、Auth0の認証トランザクションフローは以下の流れで行われます。
認証フロー図のルール
  1. アプリがAuth0への認証要求を開始します。
  2. Auth0が、構成されている接続を介して、要求をIDプロバイダーにルーティングします。
  3. ユーザーが正常に認証されます。
  4. IDトークンおよび/またはアクセストークンがルールパイプラインを介して渡され、アプリケーションに送られます。

前提条件

ルールにグローバル変数を使用する予定がある場合は、必ず先にルール変数を構成してください。詳細については、「ルールのグローバル変数を構成する」をお読みください。

Dashboardの使用

  1. [Dashboard]>[Auth Pipeline(Authパイプライン)]>[Rules(ルール)]に移動して、[Create(作成)] をクリックします。
    Dashboard - Auth Pipeline - Rules
  2. ルールテンプレートを選択します。
    Dashboard - Auth Pipeline - Rules - Template
  3. ルールに名前を付けて、必要に応じてスクリプトを編集し、[Save changes(変更の保存)] をクリックします。
    Dashboard - Auth Pipeline - Rules - Edit Rule

Management APIの使用

ルール作成エンドポイントPOST呼び出しを行います。MGMT_API_ACCESS_TOKENRULE_NAMERULE_SCRIPTRULE_ORDER、およびRULE_ENABLEDのプレースホルダーの値をそれぞれ、実際ののアクセストークン、ルール名、ルールスクリプト、ルールの順序、ルールの有効化の値に置き換えてください。
curl --request POST \
  --url 'https://{yourDomain}/api/v2/rules' \
  --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN' \
  --header 'cache-control: no-cache' \
  --header 'content-type: application/json' \
  --data '{ "name": "RULE_NAME", "script": "RULE_SCRIPT" }'
説明
MGMT_API_ACCESS_TOKENcreate:rulesスコープを持つManagement APIのアクセストークン。
RULE_NAME作成するルールの名前。ルール名は、英数字、スペース、ハイフンのみを含むことができます。スペースまたはハイフンで始めるまたは終わることはできません。
RULE_SCRIPTルールのコードを含むスクリプト。Dashboardを使用して新しいルールを作成する場合は、その入力内容と一致する必要があります。
RULE_ORDER(任意)他のルールとの関係でルールが実行される順番を示す整数。より小さい番号のルールは、大きな番号のルールより先に実行されます。順番の番号が提供されなかった場合、ルールは最後に実行されます。
RULE_ENABLED(任意)ルールが有効(true)か無効(false)かを示すブール値。
IPv6アドレスはパブリックエンドポイントで公開しています(例:travel0.us.auth0.com)。IPv6をサポートするマシンから要求が届いた場合、context.request.ipプロパティにIPv6アドレスが含まれます。手動でIPアドレスを操作する場合は、ipaddr.js@1.9.0 libraryの使用をお勧めします。

レート制限を管理する

Auth0 APIを呼び出すルールの場合は、X-RateLimit-Remainingヘッダーを確認し、返された数値が0に近づいたときに適切に対応することで、常にレート制限に対処する必要があります。また、指定されたレート制限を超えてHTTPステータスコード429(Too Many Requests)を受信した場合に対処するためのロジックも追加する必要があります。この際、再試行が必要な場合は、再試行の無限ループに陥らないためにバックオフを許可するのが最善策です。レート制限の詳細については、「Auth0 APIのレート制限ポリシー」をお読みください。

利用可能なモジュール

Rulesは、該当するNode.js用に設定されたJavaScriptサンドボックスで実行されます。 サンドボックスは、構成されているNode.jsバージョンに対して、JavaScript言語(と関連の構文)の全バージョンと多数のNode.jsモジュールをサポートしています。サポートされているサンドボックスモジュールのリストについては、「必要かを判断する:Auth0の拡張性」を参照してください。

もっと詳しく

I