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 リファレンス > ユーザー管理を参照してください。

詳しくはこちら