レガシー認証フローからの移行

バージョン11より前のLock、およびバージョン9より前のAuth0.jsを使用しているときは、廃止されるレガシー認証フローを使用できました。Auth0は、古いバージョンのAuth0.jsおよびLockからコードを新しいOIDC準拠のAPIに移行することをお勧めしています。

トークンを更新する

レガシーアプリケーションは、期限切れと同時に新しいトークンを取得する方法として、リフレッシュトークンおよびrefreshToken()関数を使用しました(以下に例を示します)。

auth0.js v9およびLock 11では、サイレント認証およびcheckSession()を使用する必要があります(以下に例を示します)

APIを呼び出す

レガシーアプリケーションは、APIを呼び出すためにIDトークンを使用しました。これはバッドプラクティスであり、アクセストークンのみを使用することをお勧めします。

APIを呼び出すには、auth0.jsまたはLockを初期化するときに、audienceパラメーターとしてAPI識別子を指定する必要があります。

オーディエンスを指定した場合、OIDCフローがトリガーされ、Auth0からIDトークンで、または/userinfoから返されたユーザープロファイルデータは、OIDC準拠になります。アプリケーションがユーザープロファイルの非標準のクレームを使用している場合は、中断されます。

SPAからAPIの呼び出し方法の詳細については、SPA Quickstartsの「APIを呼び出す」のセクションをご覧ください。また、アクセストークンを使用するために、バックエンドAPI実装を移行する必要があります。方法については、API Quickstartsをご覧ください。

ユーザープロファイル

IDトークンおよび/userinfoエンドポイントが完全なユーザープロファイルを含めることを可能にするレガシーアプリケーションフローは、廃止されます。新しいOIDC準拠のAPIへの移行を完了した後、Legacy User Profileトグルがオフになっていることを確認してください。

レガシー認証フローを使用する場合、以下に示すように、ユーザープロファイル全体がIDトークンで、または/userinfoから返されます。

新しいユーザープロファイルは、OIDC仕様に準拠しているため、応答で特定の標準クレームが利用可能です。

コンテンツは、要求されるスコープによって異なります。Auth0.jsまたはLockを構成するときに、要求するスコープを調整する必要があります。そうすることで、必要なクレームすべてがアプリケーションで利用可能になります。カスタムクレームを追加して、必要なデータを返すことができます(例:ユーザーメタデータ)。

完全なユーザープロファイルを取得する別の方法としては、次のセクションで説明するように、(認証フローを通してプロファイルを取得する代わりに)Management APIを使用するやり方があります。

Management APIを使用したユーザープロファイル

レガシーフローで、Management APIは、IDトークンでの認証をサポートしていました。この方法は廃止されているため、アクセストークンで呼び出す必要があります。

アクセストークンを取得するには、https://{yourDomain}/api/v2/オーディエンスを使用しているアクセストークンをAuth0に要求する必要があります。Auth0は現在、認証時に2つのオーディエンスを指定することをサポートしていないため、Lockまたはauth0.jsを初期化するときに、アプリケーションのAPIオーディエンスを使用する必要があります。ユーザーが認証されたら、checkSessionを使用して、Management API access_tokenを取得し、その後getUser()エンドポイントを呼び出すことができます。

以下のスコープを要求することができます。

  • read:current_user

  • update:current_user_identities

  • create:current_user_metadata

  • update:current_user_metadata

  • delete:current_user_metadata

  • create:current_user_device_credentials

  • delete:current_user_device_credentials

checkSession()を呼び出したときに、consent_requiredエラーになるときがあります。その場合は、Management APIの[Allow Skipping User Consent(ユーザー同意のスキップを許可)]が有効になっていること、およびlocalhostから実行していないことを確認してください。