根据电子邮件地址将OAuth帐户与现有帐户合并

时间:2014-05-27 00:14:43

标签: asp.net facebook asp.net-mvc-4 oauth

我正在开发一个MVC4 / Razor网站,客户要求该网站能够使用Facebook / Google帐户登录。幸运的是,使用Forms身份验证非常简单。

但是,我遇到的问题是:如果提供商返回的用户电子邮件地址与现有用户名相匹配怎么办?

例如,tim@rocketeerconsulting.com以前作为本机帐户存在。无论出于何种原因,用户都想使用Facebook登录。 Facebook返回蒂姆@ rocketeerconsulting是用户的电子邮件地址。如果用户尝试使用该信息创建帐户,MVC4将声明该帐户已存在。

有一些顾虑:

  1. 如果OAuth提供商提供的电子邮件地址与现有帐户匹配,是否允许用户合并帐户?
  2. 这会带来潜在的安全风险。我可以依靠OAuth提供商来确认该地址是否有效?如果没有,恶意用户可以创建Facebook帐户,然后访问其他用户的帐户。
  3. 如果有的话,应该如何实施?
  4. 我认识到存在类似的问题here,但我的问题专门针对MVC4中的Forms auth的上下文。

1 个答案:

答案 0 :(得分:1)

你是对的:这种方式很容易冒充 实际上,要为问题添加更多内容,并非所有OAuth提供商都会为您提供用户电子邮件地址(LinedId)。
每个OAuth提供商都使用电子邮件地址进行初始验证,但是,用户可以使用多个电子邮件地址进行初步验证,实际上还有一些措施可以让您将其作为备份。
因此,电子邮件不是一个好的关键'识别用户。
您的解决方案可能是拥有一个包含您自己的内部ID的表格,并将其与OAuth提供商唯一的用户标识相关联:一些使用电子邮件地址,其他人使用屏幕名称或类似名称。 这将允许用户在您的网站上拥有多个OAuth验证程序。 我实现了这个:Linkedin,Twitter,亚马逊,Google +,微软和Facebook。另外,我们的用户可以使用他们的域帐户登录,但这是另一个故事......