Skip to main content
Connected Accounts を使用すると、1 つの Auth0 ユーザープロファイルに複数の外部アカウントをリンクできます。サポート対象の外部プロバイダーで Connected Accounts を有効にすると、ユーザーが正常にログインした後、そのプロバイダーのアカウントがユーザープロファイルに自動的に追加されます。詳しくは、Connected Accounts for Token Vault をご覧ください。
Auth0 は、さまざまな のユーザーアカウントのリンクをサポートしています。これにより、ユーザーはどのアカウントで認証しても、アプリケーションでは同じユーザープロファイルに関連付けられた同一のユーザーとして認識されます。

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

この機能が利用可能かどうかは、ログインの実装方法と Auth0 のプランまたはカスタム契約の両方に左右されます。詳しくは、Pricing をご覧ください。
Auth0 は、デフォルトではすべてのアイデンティティを別個のものとして扱います。たとえば、あるユーザーが最初に Auth0 データベースでログインし、その後 Google や Facebook 経由でログインした場合、Auth0 ではこれら 2 回のログインは別々の 2 人のユーザーとして認識されます。ユーザーが明示的にアカウントをリンクできるようにする機能は、自分で実装できます。このシナリオでは、ユーザーは最初のプロバイダー (たとえば Google) でログインします。次に、最初のアカウントに別のアカウントをリンクできるよう、アプリケーションでリンクまたはボタンを表示します。ユーザーがそのリンクまたはボタンをクリックすると、アプリケーションが必要な呼び出しを行い、ユーザーが 2 つ目のプロバイダーでログインした際に、その 2 つ目のアカウントが最初のアカウントにリンクされるようにします。

アカウントをリンクするメリット

  • ユーザーは、アイデンティティプロバイダーごとに別々のプロファイルを作成しなくても、どのアイデンティティプロバイダーでもログインできます
  • 登録済みユーザーは、新しいソーシャルログインまたはログインを使用しても、既存のプロファイルをそのまま利用できます
  • パスワードレスログインで登録したユーザーは、より充実したプロファイルを持つアカウントにリンクできます
  • アプリは、さまざまな接続に保存されているユーザープロファイルデータを取得できます

注意事項

安全でない方法でアカウントをリンクすると、悪意のある第三者が正規のユーザーアカウントにアクセスできる可能性があります。次の点に注意してください。 手動、自動のいずれのアカウントリンクでも、リンクを行う前に、テナントで両方のアカウントに対する認証を要求する必要があります。 さらに、すべての手動アカウントリンクでは、ユーザーに資格情報の入力を求める必要があります。

仕組み

アカウントのリンク処理では、既存の2つのユーザープロファイルが1つに統合されます。アカウントをリンクするには、primary accountsecondary account を指定する必要があります。 以下の例は、サンプルの primary account と secondary account をリンクしたときに、結果のリンク済みプロファイルがどのようになるかを示しています。 注意:
  • user_id およびその他すべての主要なプロファイルプロパティは、引き続きプライマリアイデンティティのものです
  • user.identities 配列の最初の アイデンティティ はプライマリアイデンティティです
  • secondary account は、primary profile の user.identities 配列内に埋め込まれます
  • secondary account の属性は、配列内の対応する アイデンティティ の profileData フィールド内に配置されます
  • primary account の user_metadataapp_metadata は変更されません
  • secondary account の user_metadataapp_metadata は破棄されます
  • 関連する アイデンティティ を持つユーザープロファイルが自動的に統合されることはありません
  • secondary account はユーザー一覧から削除されます
  • primary account を削除すると、secondary account も削除されます

メタデータのマージ

アカウントリンク時に、メタデータが自動的にマージされることはありません。マージする場合は、Manage API の /users/patch_users_by_id エンドポイントを使用して、手動で行う必要があります。 Auth0 Node.js SDK for APIv2 も利用できます。 詳しくは、ユーザープロファイルにおけるメタデータの仕組み を参照してください。

シナリオ

アカウントリンクを実装する方法は、2 つあります。
  • ユーザー主導のアカウントリンク: アプリ内の管理画面から、ユーザー自身が自分のアカウントをリンクできるようにします。
  • 提案型アカウントリンク: 同じメールアドレスを持つアカウントを特定し、アプリ内でそれらをリンクするようユーザーに促します。

ユーザー主導のアカウントリンク

通常、アカウントリンクは認証済みユーザーによって開始されます。アプリでは、ユーザーのプロファイルページに アカウントをリンクする ボタンを配置するなど、そのための UI を提供する必要があります。 Single Page Application でユーザー主導のアカウントリンクを実装する方法について詳しくは、クライアントサイドのアカウントリンク を参照してください。Regular Web Application でユーザー主導のアカウントリンクを実装する方法について詳しくは、サーバーサイドのアカウントリンク を参照してください。

推奨されるアカウントリンク

同じメールアドレスを持つアカウントを見つけて、それらをリンクするようユーザーに促すことができます。たとえば、ユーザーが user@gmail.com で Google アカウントを作成した後、同じメールアドレスに関連付けられた Facebook アカウントでログインすることがあります。 このような場合は、リンク先のアカウントで先に認証してもらったうえで、リンク可能なアカウントの一覧を表示し、ユーザーがそれらをリンクできるようにできます。 同じことを実現する方法として、Account Link 拡張機能 を使用することもできます。
以前は、場合によっては ID Token を使用してユーザーアカウントのリンクおよびリンク解除を行うことができました。この機能は現在非推奨となりつつあります。今後は、すべてのケースでアクセストークンを使用する必要があります。

詳しく見る