Cognito で複数の Idp を使って同一のユーザーを認証する方法を教えてください

2022.11.15

困っていた内容

Cognito では、1つのアカウントで、複数の認証方法でログインできるでしょうか?

例えば、Aアカウントはメールアドレスを利用してサインインしています。この場合、「Googleでサインイン」を追加して、そちらでもログインできるようにすることは可能でしょうか?

どう対応すればいいの?

特に設定を行わない場合、同じメールアドレスで登録しても Cognito UserPool のユーザーと、 Google ソーシャルサインインのユーザーは別々に作成されます。

複数の Idp を使って1人の同一ユーザーとして認証するためには、 AdminLinkProviderForUser API を利用します。

参考資料

[1] Amazon Cognito で複数の Idp を使って1人のユーザーを認証する - tseki blog

同じメールアドレスのユーザーが統合され、1人のユーザーが複数の認証方法を使ってサインイン出来るようにする方法についてメモします。

[2] フェデレーションユーザーを既存のユーザープロファイルにリンクする - Amazon Cognito

多くの場合、同じユーザーが、ユーザープールに接続している複数の ID プロバイダー (IdP) にプロファイルを持っています。Amazon Cognito では、ユーザーが出現するたびにディレクトリ内の同じユーザープロファイルにリンクできます。このようにして、複数の IdP ユーザーを持つ 1 人のユーザーが、アプリで一貫したエクスペリエンスを持つことができます。 AdminLinkProviderForUser は、フェデレーションディレクトリ内のユーザーの一意の ID をユーザープール内のユーザーとして認識するように Amazon Cognito に指示します。

[3] AdminLinkProviderForUser - Amazon Cognito API Reference

[4] admin-link-provider-for-user — AWS CLI 2.8.12 Command Reference