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



我的问题如下:

我想通过电子邮件将多个OAUTH2帐户与同一用户相关联(例如,edimpor.com或slant.co的设计)。我需要了解此情况的安全后果。

  1. 用户user_a使用电子邮件email_a
  2. 登记到我的网站
  3. 用户user_b使用email_a登记到Facebook(误以为),其中user_a没有Facebook帐户。
  4. 用户_B使用他的Facebook帐户在我的网站上登录。
  5. 我的网站将USER_B关联到帐户user_a。

对于像Google这样的事情,这种情况确实是不可能的,但是Facebook或Twitter后端可能是可能的。无法确保用户_A真正使用同一电子邮件拥有所有服务,对吗?如果我是对的,那么确保用户不能登录他人帐户的措施是什么?

好问题,许多开发人员在这些情况下不做正确的事情。当我们构建Firebase Auth(以前称为Google身份工具包,您可以在该页面上看到一些详细信息),我们花了很多时间来分析这些情况。这里很难详细描述,但是一些概念会有所帮助。

  • 权威IDP:了解谁是特定标识符的权威。例如@gmail.com Google是权威的,对于 @yahoo.com,电子邮件是权威的。这意味着,当Google返回某人拥有xyz@gmail.com时,您可以安全地假设他们肯定可以控制它。

取决于网站上数据的敏感性以及如何允许"帐户恢复",您可以始终允许通过权威的IDP登录,但是如果用户尝试与其他不是权威的IDP登录,您应要求他们在合并时确认原始帐户凭据(例如,要求PW或要求Google的主张,然后才允许仅通过Facebook登录来接管该帐户)。

希望这会有所帮助。这很复杂,因此要小心会更好,而不可能是不可能的。

  1. 用户user_a使用电子邮件email_a
  2. 登记到我的网站
  3. 用户user_b使用email_a登记到Facebook(误以为),其中user_a没有Facebook帐户。

通常,通过在所有帐户上执行电子邮件唯一性来避免这种情况(user_b将在注册通知他已经有一个带有email_a的帐户时会遇到错误)。即便如此,通过检查您的电子邮件来"确认"帐户的概念 - user_b永远无法验证他的帐户,因为他无法访问email_a。

最新更新