メインコンテンツへスキップ
Hooks will reach end of life (EOL) on April 30, 2027.
  • As of October 16, 2023, Hooks are no longer available in newly created tenants.
  • As of November 18, 2024, Hooks are read-only. Active Hooks still run, and you can enable or disable them and change their configuration values and secrets. You can’t edit their code in the Dashboard, the Management API, or tools that use it, such as the Auth0 CLI, Deploy CLI, Terraform, and Agent Skills.
  • After April 30, 2027, Hooks stop running and are removed.
Use Actions to extend Auth0:
Client Credentials Exchange 拡張ポイントでは、クライアントの資格情報フローを使用して Authentication API の POST /oauth/token エンドポイント から が発行される際に、Hooks を使ってカスタムアクションを実行できます。たとえば、トークンの発行を拒否したり、アクセストークンにカスタムクレームを追加したり、スコープを変更したりできます。詳しくは、クライアントの資格情報フロー をご覧ください。 この拡張ポイントの Hooks はブロッキング (同期) 型です。つまり、トリガーの処理の一部として実行され、Hooks が完了するまで Auth0 パイプラインの残りの処理は実行されません。
Client Credentials Exchange 拡張ポイントの triggerId は credentials-exchange です。この拡張ポイント用の Hooks を作成する方法については、Create Hooks をご覧ください。
ほかの拡張ポイントについては、Extensibility Points をご覧ください。

スターターコードとパラメータ

Client Credentials Exchange の拡張ポイントで実行される Hook を作成する際は、以下のスターターコードが参考になります。Hook 関数に渡して利用できるパラメータは、コードサンプルの冒頭に記載されています。
以下の点にご注意ください。
  • サンプルコードの末尾にあるコールバック関数 (cb) は、処理の完了を通知するためのもので、必ず含める必要があります。
  • access_token.scope = scope という行は、付与されたすべてのスコープがアクセストークンに含まれるようにするためのものです。これを削除すると、すべてのスコープがリセットされ、トークンにはスクリプトで追加したスコープだけが含まれます。

デフォルトレスポンス

Client Credentials Exchange 拡張ポイントで Hook を実行すると、デフォルトのレスポンスオブジェクトは次のとおりです。

スターターコードのレスポンス

スコープと追加のクレームを使ってスターターコードをカスタマイズしたら、Hook Editor に組み込まれているランナーで Hook をテストできます。ランナーは、Client Credentials Exchange で取得されるものと同じリクエスト本文とレスポンスを使って、Hook の呼び出しをシミュレートします。
ランナーでコードを実行するには保存が必要なため、元のコードは上書きされます。
スターターコードに基づく Hook を実行すると、レスポンスオブジェクトは次のようになります。

サンプルスクリプト: アクセストークンにスコープを追加する

この例では、Hook を使用して、アクセストークンにすでに含まれているスコープに追加のスコープを加えます。
詳しくは、スコープをご覧ください。

レスポンス

このHookを実行すると、レスポンスオブジェクトは次のようになります。

サンプルスクリプト: アクセストークンにクレームを追加する

この例では、名前空間付きのカスタムクレームとその値をアクセストークンに追加します。詳細については、Create Namespaced Custom Claimsを参照してください。 発行されたトークンには、次の内容をクレームとして追加できます。
  • レスポンスオブジェクトの scope プロパティ
  • 名前空間付きのプロパティ名を持つ任意のプロパティ
拡張ポイントでは、レスポンスオブジェクトのそのほかのプロパティはすべて無視されます。
フック内から設定済みの Hook Secret にアクセスするには、context.webtask.secrets.SECRET_NAME を使用します。

レスポンス

このHookを実行したときのレスポンスオブジェクトは次のとおりです。

サンプルスクリプト: エラーを返す、またはアクセストークンを拒否する

この例では、独自の Error オブジェクトを使用して、OAuth 2.0 のエラーレスポンスを生成します。 (詳しくは、IETF Datatracker の OAuth2 RFC - セクション 5.2を参照してください。) 次のように、通常の JavaScript エラーがコールバックで返されると:
その後、/oauth/token エンドポイントに client_credentials グラントをリクエストすると、Auth0 は次のように応答します:
ただし、OAuth 2.0 のエラーレスポンスをより細かく制御したい場合は、代わりに使用できる 3 つのカスタム Error オブジェクトが用意されています。

InvalidScopeError

続いて、/oauth/token エンドポイントに client_credentials グラントをリクエストすると、Auth0 は次のように応答します:

InvalidRequestError

その後、/oauth/token エンドポイントに client_credentials グラントをリクエストすると、Auth0 からは次のような応答が返されます。

ServerError

次に、/oauth/token エンドポイントに対して client_credentials グラントをリクエストすると、Auth0 は次のように応答します:
現時点では、組み込みの JavaScript Error クラスと ServerError の動作は同じですが、ServerError クラスを使うと、返される OAuth 2.0 エラーを明示的に指定できます。

さらに詳しく