🔥

Firebase AuthenticationでGoogle認証すると、既存の別サービス同一メールアドレスのプロバイダーが消えた

2023/02/05に公開

事象

同じメールアドレスを使用するアカウントをリンクするの設定を有効にしていることが前提
複数のプロバイダをアカウントにリンクする  |  Identity Platform のドキュメント  |  Google Cloud

あとから同一メールアドレスのGoogleアカウントで登録すると、それまで登録されていた同一メールの別プロバイダの登録が消えるという事象がおきた。

例:

  1. 最初にTwitterアカウントで登録する
  2. 次に1.のTwitterと同一のメールアドレスのGoogleアカウントで登録する
  3. 最初に登録したTwitterの登録が消え、Googleで上書きされる
  4. 以降、Googleで認証できるが、Twitterでは認証エラーが発生するようになる

なぜこのような挙動になるか?

セキュリティ上の仕様。
Firebaseでは認証プロバイダーを信用できるものと信用できないものに分類しており、Googleアカウントは前者、Twitterは後者になる。
信頼できないプロバイダーのアカウントは、メールアドレスの所有者本人が作成したものではない可能性があり、なりすましのリスクがある。[1]
そのため、同一メールの信用できるプロバイダーが後から登録された場合は、それで上書きする仕様になっているとのこと。

ドキュメントに記載されている
Firebaseプロジェクトのユーザー  確認済みのメールアドレス

なんで書いたの?

最初この事象を見た時に少し戸惑ったのと、公式ドキュメントの該当箇所にたどり着くまで時間がかかったので備忘として記載

参考

脚注
  1. 信用されないプロバイダーに挙げられているサービスに実際そのようなリスクがあるかは裏取りしていません ↩︎

Discussion