Skip to main content

MRRT 用にアプリケーションを設定する

Multi-Resource (MRRT) を使用するには、Auth0 の Management API を使用して、アプリケーションのリフレッシュトークンポリシーを設定します。これらのポリシーでは、リフレッシュトークン交換時に、アプリケーションが要求できる API とスコープを指定します。 MRRT ポリシーは、アプリケーションの refresh_token.policies プロパティで定義できます。
audience プロパティと scope プロパティは、テナント内の既存のアプリケーションに対応している必要があります。そうでない場合、リフレッシュトークン交換時にそれらは暗黙的に無視されます。
既存のアプリケーションの場合は、Update a Client エンドポイントに PATCH リクエストを送信します。新しいアプリケーションを作成するには、Create a Client エンドポイントに POST リクエストを送信します。 レスポンス例:

マルチリソース リフレッシュトークンを実装する

アプリケーションのリフレッシュトークンを MRRT ポリシーで設定すると、単一のリフレッシュトークンを使って、複数の API 向けの を取得できるようになります。 そのためには、アプリケーションで 認可コードフロー または リソース所有者パスワードグラント を使用してログインフローを開始する必要があります。

ステップ 1: 認証し、リフレッシュトークンをリクエストする

リフレッシュトークンを受け取るには、認証リクエストを開始する際に offline_access スコープを含めます。詳しくは、リフレッシュトークンを取得するを参照してください。
リフレッシュトークンを受け取れない場合は、次の点を確認してください。
  • API の設定で Allow Offline Access が有効になっていること。
  • スコープに offline_access が含まれていること。
  • リクエストで使用する audience が、テナントに設定されている API と一致していること。

ステップ 2: リフレッシュトークンを別のAPI用に交換する

リフレッシュトークンが発行されると、初回の認証とMRRTポリシーの両方で定義された任意のAPIおよびスコープに対するアクセストークンをリクエストできます。たとえば、次のとおりです。  詳しくは、リフレッシュトークンを使うをご覧ください。 Auth0 Swift SDK を使用している場合は、次のコードを使ってリフレッシュトークンを新しいアクセストークンに交換できます。
詳しくは、Auth0 Swift SDKを参照してください。 Auth0 Android SDKを使用している場合は、次のコードでリフレッシュトークンを交換できます。
詳しくは、Auth0 Android SDKを参照してください。

ステップ 3: アクセストークンを使って API を呼び出す

Bearer HTTP authorization scheme を使用して、アクセストークンで保護された API を呼び出します。詳しくは、Use Access Tokens を参照してください。
jwt.io でアクセストークンをデコードすると、次の点を確認できます。
  • aud クレームが要求した API と一致していること (例: https://billing.example.com) 。
  • scope クレームに許可された値のみが含まれていること。

Actionsでマルチリソース リフレッシュトークンを使用する

Actions で MRRT を使用すると、アプリケーションの MRRT ポリシーに基づいて動的な判断を行うよう設定できます。これを可能にするため、Post-Login Action では event.client.refresh_token.policies オブジェクトが提供されており、 やスコープなどの関連情報を確認できます。 event.client.refresh_token.policies オブジェクトを使うことで、リフレッシュトークンの発行時または交換時にアプリケーションの audience とスコープを評価し、API へのアクセスとスコープをより正確に制御できます。

評価ロジック

MRRT は元の認証を置き換えるものではなく、その拡張として機能します。リフレッシュトークンを交換する際、Auth0 は次のロジックに基づいて交換リクエストを評価します。
  • audience パラメーターが省略されている場合、Auth0 は元の audience と、MRRT ポリシーで設定された追加のスコープを含むアクセストークンを返します。
  • 新しい audience パラメーターが指定されている場合、Auth0 はその audience が MRRT ポリシーに含まれていることを確認し、その audience 用に設定されたスコープを持つアクセストークンを返します。
  • scope パラメーターが省略されている場合、Auth0 は元のリクエストと MRRT ポリシーで許可されているすべてのスコープを組み合わせます。
  • 新しい scope パラメーターが指定されている場合、Auth0 は要求されたスコープを検証し、MRRT ポリシーに含まれるスコープを持つアクセストークンを返します。無効または許可されていないスコープは、エラーを返さずに無視されます。
  • audience パラメーターが元のリクエストと同じ場合、Auth0 は MRRT ポリシーを適用し、MRRT で設定されたすべてのスコープと元の認証時のスコープを含む、その audience 用のアクセストークンを返します。
MRRT を使用すると、新しいリフレッシュトークンを発行したり、ユーザーに再度ログインを求めたりすることなく、新しい API へのユーザーアクセスを拡張できます。

ユーザーが次のaudienceとスコープを指定してログインする場合:
アプリケーションのMRRTポリシーは、追加のスコープを追加するように構成されています:
同じaudienceを指定し、スコープを指定しないリフレッシュトークン交換を行うと、設定済みのすべてのスコープを含むアクセストークンが返されます。