POST /oauth/tokenエンドポイントからアクセストークンが発行される際にカスタムアクションを実行できます。たとえば、トークンが発行されないように拒否する、アクセストークンにカスタムクレームを追加する、またはそのスコープを修正することができます。詳細については、「クライアントの資格情報フロー」をお読みください。
この拡張ポイントでのフックはブロッキング(同期的)であり、トリガーのプロセスの一部として実行されます。そのため、フックが完了するまでAuth0パイプラインの他の部分の実行が停止されます。
Client Credentials Exchange(クライアント資格情報交換)拡張ポイントの
triggerIdは、credentials-exchangeです。この拡張ポイントに対してフックを作成する方法については、「フックを作成する」をお読みください。スターターコードとパラメーター
Client Credentials Exchange(クライアント資格情報交換)拡張ポイントで実行されるフックを作成する際、以下のスターターコードが役立つかもしれません。Hook関数に渡され、使用されることができるパラメーターは、コード例の最上部にリストされています。- サンプルコードの終わりにあるコールバック関数(
cb)は、完了を知らせるもので、必ず含まれなければなりません。 access_token.scope = scopeという行は、すべての付与されたスコープがアクセストークンに存在するようにします。それを取り除くとすべてのスコープをリセットすることになり、トークンにはスクリプトで追加したスコープのみ含まれます。
デフォルトの応答
Client Credentials Exchange(クライアント資格情報交換)拡張ポイントでフックを実行すると、デフォルトの応答オブジェクトは次のようになります。スターターコードの応答
スコープと追加クレームを使用してスターターコードをカスタマイズしたら、Hookエディタに埋め込まれたランナーを使用してフックをテストできます。ランナーは、Client Credentials Exchange(クライアント資格情報交換)で得られるものと同じ要求ボディと応答を使ってフックへの呼び出しをシミュレートします。 スターターコードに基づいたフックを実行する場合、応答オブジェクトは以下の通りになります。スクリプト例:アクセストークンに追加スコープを追加する
この例では、既存のスコープに加えてアクセストークンに追加のスコープを付与するためにフックを使用します。応答
このフックを実行すると、応答オブジェクトは次のようになります。スクリプト例:アクセストークンにクレームを追加する
この例では、アクセストークンに名前空間のカスタムクレームとその値を追加します。詳細については、「名前空間カスタムクレームを作成する」をお読みください。 以下をクレームとして発行済みトークンに追加できます。- 応答オブジェクトの
scopeプロパティ - 名前空間プロパティ名のあるすべてのプロパティ
構成されたフックシークレットにフック内からアクセスするには、
context.webtask.secrets.SECRET_NAMEを使用します。応答
このフックを実行すると、応答オブジェクトは次のようになります。スクリプト例:エラーを発生させる、またはアクセストークンを拒否する
この例では、カスタムのエラーオブジェクトを使用して、OAuth2エラー応答を生成します(詳細については、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クラスでは、返されるOAuth2エラーを明示的にすることができます。