影響を受けるエンドポイント
Actions
スコープの変更
Management API で実行できる操作は、アクセストークンに含まれるスコープによって異なります。この移行により、現在ログイン中のユーザーのデータのみを更新できる制限付きのアクセストークン、または任意のユーザーのデータを更新できるアクセストークンのいずれかを取得できます。次の表では、ケースごと、エンドポイントごとに、トークンに必要なスコープを確認できます。 たとえば、read:users スコープを含むアクセストークンを取得した場合、GET /api/v2/users/{id} エンドポイントを使って任意のユーザーのデータを取得できます。一方、トークンに read:current_user スコープが含まれている場合は、現在ログイン中のユーザー (そのトークンの発行対象ユーザー) の情報のみを取得できます。
アクセストークンを取得する
Auth0では、前述のエンドポイント向けにトークンを取得する方法が変更されました。ユーザーを認証してトークンを取得する方法は、使用する技術や、認証に用いるのフローによって、いくつかのバリエーションがあります。- ブラウザーで実行されるSPA: 認可エンドポイントを使用します。
- サーバー上で実行されるWebアプリ、モバイルアプリ、サーバープロセス、または高い信頼性を持つアプリ: を使用します。
- クロス認証: リクエストが異なるドメインから送信される場合は、embedded Lock または auth0.js を使用してユーザーを認証します。
認可エンドポイント
このセクションでは、認可エンドポイントでトークンを取得する方法の違いを、例を使って説明します。移行するエンドポイントがどれであっても変更内容は同じで、異なるのはリクエストで指定するスコープだけであることに注意してください。 以下の例では、GET User by ID エンドポイントを使用して、ログイン中のユーザーの完全なプロファイル情報を取得します。そのために、まず Implicit グラントを使用してユーザーを認証し、トークンを取得します。以下は、ID トークンを取得してそれを使ってエンドポイントを呼び出す、従来の方法の実装例です。
以下の例では、アクセストークンを取得する新しい方法を確認できます。
Management API にアクセスできるアクセストークンを取得するには:
audienceをhttps://{yourDomain}/api/v2/に設定しますscopeとして${scope}を要求します- Auth0 が ID トークンとアクセストークンの両方を返すように、
response_typeをid_token tokenに設定します
aud には tenant の API URI、scope には ${scope}、sub にはログイン中のユーザー ID が設定されていることに注目してください。
アクセストークン を取得したら、それを使ってエンドポイント を呼び出せます。この部分は変わらず、request で変わるのは Bearer token として使用する値だけです。response も同じです。
トークンエンドポイント
このセクションでは、トークンエンドポイントを使ってトークンを取得する際の違いを、例を用いて説明します。ただし、どのエンドポイントを移行する場合でも変更内容は同じで、異なるのはリクエストで指定するスコープだけであることに注意してください。 以下の例では、ログイン中のユーザーの完全なプロファイル情報を取得するために、GET User by ID エンドポイントを使用します。まず、Password Exchange グラントを使ってユーザーを認証し、その後トークンを取得します。以下は、ID トークンを取得し (その後、それを使ってエンドポイントを呼び出す) 従来のアプローチの実装例です。
以下の例では、アクセストークンも取得する新しい方法を確認できます。
Management API にアクセスできるアクセストークンを取得するには、次のようにします。
audをhttps://{yourDomain}/api/v2/に設定します- スコープ
read:current_userを要求します
Bearer トークンとして使う値だけです。レスポンスも同じです。
埋め込み Lock または auth0.js
アプリケーションに Lock または auth0.js v9 のいずれかを埋め込んでいる場合は、クロスオリジン認証を使用しています。これは、異なるドメインからリクエストが送信される際にユーザーを認証するために使用されます。 auth0.js を使用して Management API にアクセスし、ユーザーを管理している場合は、スクリプトを更新する必要があります。 以下の例では、従来の方法を確認できます。 この例では、新しい方法を確認できます。-
レスポンスで ID トークン とアクセストークンの両方を要求します
responseType: 'token id_token' -
トークンのとして Management API を設定します
audience: 'https://YOUR_DOMAIN/api/v2/' -
必要な権限を要求します
scope: 'read:current_user' - アクセストークンを使用して Management API で認証します
アカウントリンクの変更点
この機能に関する変更点は次のとおりです。-
Authorizationheader で ID トークンは使用できなくなりました -
Authorizationheader でアクセストークンを使用し、付与された権限がupdate:usersの場合は、リクエスト本文でセカンダリアカウントのuser_idまたは ID トークンのいずれかを送信できます -
Authorizationheader でアクセストークンを使用し、付与された権限がupdate:current_user_metadataの場合は、リクエスト本文でセカンダリアカウントの ID トークンのみを送信できます。この場合、次の条件を満たす必要があります。- ID トークンは
RS256で署名されている必要があります (この値は Auth0 Dashboard > アプリケーション > アプリケーション設定 > 詳細設定 > OAuth で設定できます) - ID トークンの
audクレームはアプリケーションを識別するものであり、アクセストークンのazpクレームと同じ値である必要があります
- ID トークンは
制限
Management API へのアクセスに使用するアクセストークンでは、aud クレームに設定できる値は 1 つのみです。トークンに複数の値が含まれている場合、Management API へのリクエストはエラーになります。