Client Credentials フロー を通じて発行されるトークンでは、Hooks を追加することで、スコープを変更したり、カスタムクレームを追加したりできます。
Hooks を使用すると、Node.js コードで Auth0 の動作をカスタマイズできます。Hooks は、Auth0 プラットフォームの特定の拡張ポイント (Client Credentials フローなど) に関連付けられた、安全で自己完結型の関数です。Auth0 は実行時に Hooks を呼び出して、カスタムロジックを実行します。
Hooks は、 または を使用して管理できます。
特定の拡張ポイントに対して複数の Hook を作成できますが、各拡張ポイントで同時に有効にできる Hook は 1 つだけです。その拡張ポイントに対して後から作成した Hook は自動的に無効になるため、明示的に有効化する必要があります。有効な Hook は、すべてのアプリケーションと API に対して実行されます。
このチュートリアルを開始する前に、次の作業を行ってください。
- Hook を作成: トークンをカスタマイズする Hook を作成します。
- Hook をテスト: Client Credentials フローを実行し、アクセストークンをデコードして、新しい Hook をテストします。
この例では、次のことを行います。
- アクセストークン に任意のクレーム (
https://foo.com/claim) を追加する
- 設定済みの API に権限を 1 つ追加する
トークンをカスタマイズする Hook を作成します。拡張ポイントの選択を求められたら、Client Credentials Exchange を選択し、エディターに次のコードを追加します。
先ほど作成した フック をテストするには、Client Credentials Exchange を実行して を取得し、それをデコードして内容を確認する必要があります。
トークンを取得するには、Client Credentials Flow エンドポイント に POST リクエストを送信します。CLIENT_ID、CLIENT_SECRET、API_IDENTIFIER のプレースホルダー値は、それぞれアプリケーションの 、アプリケーションの 、および API の識別子に置き換えてください。クライアントID とクライアントシークレットは Application の設定で、API の識別子は API の設定で確認できます。
成功すると、レスポンスには次が含まれます:
access_token
- 有効期限 (秒単位、
expires_in)
Bearer に設定されたトークンタイプ (token_type)
extra 権限 (scope、Hook によって追加)
アクセストークンをデコードして内容を確認する最も簡単な方法は、JWT.io Debugger を使用することです。
アクセストークンをコピーしてエディターに貼り付けます。 は自動的にデコードされ、内容が表示されます。
ペイロード の最後の 2 項目は、いずれもフックによって設定されていることに注意してください。
"scope": "extra"
"https://foo.com/claim": "bar"