🔥
Firebase AuthenticationでGoogle認証すると、既存の別サービス同一メールアドレスのプロバイダーが消えた
事象
同じメールアドレスを使用するアカウントをリンクする
の設定を有効にしていることが前提
複数のプロバイダをアカウントにリンクする | Identity Platform のドキュメント | Google Cloud
あとから同一メールアドレスのGoogleアカウントで登録すると、それまで登録されていた同一メールの別プロバイダの登録が消えるという事象がおきた。
例:
- 最初にTwitterアカウントで登録する
- 次に1.のTwitterと同一のメールアドレスのGoogleアカウントで登録する
- 最初に登録したTwitterの登録が消え、Googleで上書きされる
- 以降、Googleで認証できるが、Twitterでは認証エラーが発生するようになる
なぜこのような挙動になるか?
セキュリティ上の仕様。
Firebaseでは認証プロバイダーを信用できるものと信用できないものに分類しており、Googleアカウントは前者、Twitterは後者になる。
信頼できないプロバイダーのアカウントは、メールアドレスの所有者本人が作成したものではない可能性があり、なりすましのリスクがある。[1]
そのため、同一メールの信用できるプロバイダーが後から登録された場合は、それで上書きする仕様になっているとのこと。
ドキュメントに記載されている
Firebaseプロジェクトのユーザー 確認済みのメールアドレス
なんで書いたの?
最初この事象を見た時に少し戸惑ったのと、公式ドキュメントの該当箇所にたどり着くまで時間がかかったので備忘として記載
参考
-
信用されないプロバイダーに挙げられているサービスに実際そのようなリスクがあるかは裏取りしていません ↩︎
Discussion