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

时间:2016-11-27 06:24:14

标签: oauth oauth-2.0 google-oauth

我的问题如下:

我想通过电子邮件将多个oauth2帐户关联到同一个用户(例如medium.com或slant.co的设计)。我需要了解这种情况的安全后果。

  1. 用户User_A使用电子邮件Email_A
  2. 注册到我的网站
  3. 用户User_B使用Email_A(错误地说)向User注册Facebook,其中User_A没有Facebook帐户。
  4. User_B使用他的Facebook帐户登录我的网站。
  5. 我的网站将User_B与帐户User_A相关联。
  6. 这种情况对谷歌这样的事情来说确实是不可能的,但它可能适用于Facebook或Twitter的后端。没有办法确保User_A真正拥有使用同一封电子邮件的所有服务,对吗? 如果我是对的,有哪些措施可以确保用户无法登录其他用户的帐户?

2 个答案:

答案 0 :(得分:0)

  
      
  1. 用户User_A使用电子邮件Email_A
  2. 注册到我的网站   
  3. 用户User_B使用Email_A(假设错误地)向Facebook注册,其中User_A没有Facebook帐户。
  4.   

通常可以通过在所有帐户中强制实施电子邮件唯一性来避免这种情况(User_B在注册时会收到错误,通知他已经有一个Email_A帐户)。即便如此,还是通过检查您的电子邮件来“确认”帐户的概念 - User_B无法验证他的帐户,因为他无法访问Email_A。

答案 1 :(得分:0)

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

  • 权威IDP:了解谁对特定标识符具有权威性。例如@ gmail.com谷歌是权威的,对于@ yahoo.com电子邮件雅虎是权威的。这意味着当Google返回某人有xyz@gmail.com电子邮件时,您可以放心地认为他们肯定可以控制它。

根据您网站上的数据的敏感度以及您允许“帐户恢复”的方式,您可以始终允许通过权威IDP登录,但是如果用户尝试使用另一个非权威的IDP登录,您应该要求他们在合并时确认原始帐户凭证(例如,在允许仅通过Facebook登录接管帐户之前请求pw或要求Google提出断言)。

希望这会有所帮助。这很复杂,所以小心更好,不合并几乎是不可能的。