Skip to main content

利用可否は Auth0 のプランによって異なります

この機能が利用可能かどうかは、使用しているログイン実装と、Auth0 のプランまたはカスタム契約の内容によって異なります。詳しくは、Pricing を参照してください。
ユーザーアカウントは、さまざまな方法でリンクできます。
  • 外部リンク用アプリケーションを使用する Action
  • Auth0
  • Auth0.js ライブラリ

外部リンクアプリケーションを使用する Action

Action を外部リンクアプリケーションと併用すると、Management API を使ってユーザーアカウントをリンクできます。
Auth0 は、Account Linking の後に正しいプライマリ ユーザー へ自動的に切り替わらないため、Account Linking が成功したら Actions のコード内で変更する必要があります。手動でアカウントをリンクする場合は、必ずユーザーに認証情報の入力を求めてください。悪意のある第三者が正当なユーザーアカウントにアクセスできないようにするため、リンクを実行する前に、テナントで両方のアカウントに対して認証を求める必要があります。
次の手順は、実装例を示しています。
  1. Action が、リンク対象となる可能性のあるユーザーアカウントを特定します (存在する場合) 。
  2. Action が、候補となるユーザーのアイデンティティを含むトークンペイロードとともに、ユーザーを外部リンクアプリケーションにリダイレクトします。
  3. 外部リンクアプリケーションが、リンクするアカウントの認証情報を使って認証するようユーザーに求めます。
  4. 外部リンクアプリケーションが、プライマリおよびセカンダリのユーザーアイデンティティを含むトークンペイロードとともに、ユーザーを Action にリダイレクトして戻します。
  5. Action が、トークンの真正性と内容を検証します。
  6. Action が、外部リンクアプリケーションからの結果に基づいて Management API を呼び出し、アカウントをリンクします。
  7. event.user.user_id と一致しない場合、Action がプライマリユーザーに切り替えます。

例: アカウントリンク用 Action

Management API

Management API の ユーザーアカウントをリンクする エンドポイントは、次の 2 通りの方法で使用できます。
  • update:current_user_identities スコープを持つ を使用する、ユーザー主導のクライアントサイドでのアカウントリンク。
  • update:users スコープを持つアクセストークンを使用する、サーバーサイドでのアカウントリンク。

ユーザー主導のクライアントサイドでのアカウントリンク

ユーザー主導のクライアントサイドでのアカウントリンクでは、ペイロードに次の項目を含むアクセストークンが必要です。
  • update:current_user_identites スコープ
  • URL の一部として含まれるプライマリアカウントの user_id
  • RS256 で署名され、リクエスト元のアクセストークンの azp クレーム の値と一致するクライアントを識別する aud クレーム を含む、セカンダリアカウントの
update:current_user_identities スコープを含むアクセストークンは、現在ログインしているユーザーの情報の更新にのみ使用できます。そのため、この方法はユーザー自身がリンク処理を開始するシナリオに適しています。

サーバーサイドのアカウントリンク

サーバーサイドのアカウントリンクでは、ペイロードに次の項目を含むアクセストークンが必要です。
  • update:users スコープ
  • URL の一部として指定するプライマリアカウントの user_id
  • セカンダリアカウントの user_id
  • RS256 で署名され、要求元のアクセストークンの azp クレームの値と一致するクライアントを識別する aud クレームを含む、セカンダリアカウントの IDトークン
update:users スコープを含むアクセストークンは、任意のユーザー情報の更新に使用できます。そのため、この方法はサーバーサイドのコードでのみ使用することを想定しています。 セカンダリユーザーアカウントの user_idprovider は、その一意の識別子から判別できます。たとえば、識別子 google-oauth2|108091299999329986433 の場合:
  • providergoogle-oauth2
  • user_id108091299999329986433
または、provideruser_id の代わりに、セカンダリアカウントの IDトークン を送信することもできます:

Auth0.js ライブラリ

クライアントサイドでアカウントリンクを行うには、Auth0.js ライブラリを使用できます。詳細については、Auth0.js Reference > ユーザー管理を参照してください。

詳細はこちら