通过电子邮件将多个oAuth2服务链接到同一用户的安全性

通过电子邮件将多个oAuth2服务链接到同一用户的安全性,oauth,oauth-2.0,google-oauth,Oauth,Oauth 2.0,Google Oauth,我的问题如下: 我想通过电子邮件将多个oauth2帐户与同一用户关联(例如media.com或sland.co的设计)。我需要了解这个场景的安全后果 用户使用电子邮件注册到我的网站 用户用户_B使用电子邮件_A(假设是错误的)注册到Facebook,而用户_A没有Facebook帐户 用户_B使用其Facebook帐户登录我的网站 我的网站将用户_B与帐户用户_A关联 这种情况对于像谷歌这样的公司来说是不可能的,但对于Facebook或Twitter后端来说也是可能的。没有办法确保用户真正拥有使

我的问题如下:

我想通过电子邮件将多个oauth2帐户与同一用户关联(例如media.com或sland.co的设计)。我需要了解这个场景的安全后果

  • 用户使用电子邮件注册到我的网站
  • 用户用户_B使用电子邮件_A(假设是错误的)注册到Facebook,而用户_A没有Facebook帐户
  • 用户_B使用其Facebook帐户登录我的网站
  • 我的网站将用户_B与帐户用户_A关联
  • 这种情况对于像谷歌这样的公司来说是不可能的,但对于Facebook或Twitter后端来说也是可能的。没有办法确保用户真正拥有使用同一电子邮件的所有服务,对吗? 如果我是对的,有什么措施可以确保一个用户不能登录到另一个用户的帐户

  • 用户使用电子邮件注册到我的网站
  • 用户用户_B使用电子邮件_A(假设是错误的)注册到Facebook,而用户_A没有Facebook帐户

  • 这通常是通过在所有帐户上强制电子邮件唯一性来避免的(用户B在注册时会出错,并通知他已经有一个帐户使用电子邮件A)。即便如此,还是有一种通过检查你的电子邮件来“确认”帐户的概念——用户B永远无法验证他的帐户,因为他无法访问电子邮件A。

    这是一个很好的问题,许多开发人员在这种情况下没有做正确的事情。当我们构建Firebase Auth(以前称为,您可以在该页面上看到一些细节)时,我们花费了大量时间来分析这些案例。这里很难详细描述,但一些概念会有所帮助

    • 权威IDP:了解谁是特定标识符的权威。e、 g.@gmail.com谷歌是权威的,对于@yahoo.com电子邮件,雅虎是权威的。这意味着当谷歌返回某个人的xyz@gmail.com通过电子邮件,你可以放心地认为他们一定能控制它
    根据您站点上数据的敏感性以及您允许“帐户恢复”的方式,您可以始终允许通过权威IDP登录,但如果用户尝试使用另一个非权威IDP登录,则应要求他们在合并时确认原始帐户凭据(例如,在允许仅通过facebook登录接管帐户之前,向谷歌请求pw或to请求断言)

    希望这能有所帮助。这很复杂,所以小心点更好,不被遗漏几乎是不可能的