POST /oauth/token エンドポイント から が発行される際に、Hooks を使ってカスタムアクションを実行できます。たとえば、トークンの発行を拒否したり、Access Token にカスタムクレームを追加したり、scope を変更したりできます。詳しくは、Client Credentials Flow をご覧ください。
この拡張ポイントの Hooks はブロッキング (同期) 型です。つまり、トリガーの処理の一部として実行され、Hook が完了するまで Auth0 パイプラインの残りの処理は実行されません。
Client Credentials Exchange 拡張ポイントの
triggerId は credentials-exchange です。この拡張ポイント用の Hook を作成する方法については、Create Hooks をご覧ください。スターターコードとパラメータ
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 は次のように応答します:
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 エラーを明示的に指定できます。