メインコンテンツへスキップ
Connected Accounts を使用すると、1 つの Auth0 ユーザープロファイルに複数の外部アカウントをリンクできます。サポートされている外部プロバイダーで Connected Accounts を有効にすると、ユーザーが正常にログインした後、Auth0 はそのプロバイダーのアカウントを自動的にユーザープロファイルに追加します。詳しくは、Token Vault の Connected Accounts を参照してください。
Auth0 は、さまざまな のユーザーアカウントのアカウントリンクをサポートしています。これにより、ユーザーはどのアカウントで認証しても、アプリでは同一ユーザーとして認識され、同じユーザープロファイルに関連付けられます。

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

この機能が利用可能かどうかは、ログイン実装の構成と Auth0 プランまたはカスタム契約の両方によって決まります。詳しくは、Pricing を参照してください。
Auth0 はデフォルトで、すべての ID を別個のものとして扱います。たとえば、ユーザーが сначала Auth0 データベースでログインし、その後 Google または Facebook 経由でログインした場合、Auth0 ではこれら 2 回のログインは別々の 2 人のユーザーとして認識されます。ユーザーが明示的にアカウントをリンクできるようにする機能を実装することは可能です。このシナリオでは、ユーザーは最初のプロバイダー (たとえば Google) でログインします。次に、アプリケーションは、別のアカウントを最初のアカウントにリンクするためのリンクまたはボタンを提供します。ユーザーがそのリンクまたはボタンをクリックすると、アプリケーションが呼び出しを行い、ユーザーが 2 つ目のプロバイダーでログインした際に、2 つ目のアカウントが 1 つ目のアカウントにリンクされるようにします。

アカウントリンクの利点

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

注意事項

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

仕組み

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

メタデータのマージ

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

シナリオ

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

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

通常、アカウントリンクは認証済みのユーザーによって開始されます。アプリケーションでは、ユーザーのプロフィールページに アカウントをリンク ボタンなどの UI を用意する必要があります。 Single Page Application でユーザー主導のアカウントリンクを実装する方法について詳しくは、Client-Side Account Linking を参照してください。Regular Web Application でユーザー主導のアカウントリンクを実装する方法について詳しくは、Server-Side Account Linking を参照してください。

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

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

詳細情報