【问题标题】:Merging OAuth account with existing account based on email address基于电子邮件地址将 OAuth 帐户与现有帐户合并
【发布时间】:2014-07-15 18:25:05
【问题描述】:

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

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

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

有几个问题:

  1. 如果 OAuth 提供商提供的电子邮件地址与现有帐户匹配,是否应允许用户合并帐户?
  2. 这会带来潜在的安全风险。我可以依靠 OAuth 提供商来确认地址是否有效吗?否则,恶意用户可以创建 Facebook 帐户,然后获得对其他用户帐户的访问权限。
  3. 如果有的话,应该如何实现这样的事情?

我知道有一个类似的问题here,但我的问题专门与 MVC4 中的 Forms auth 的上下文有关。

【问题讨论】:

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


    【解决方案1】:

    你是对的:这种方式很容易模仿
    事实上,为了解决这个问题,并不是所有的 OAuth 提供商都会给你用户电子邮件地址 (LinedId)。
    每个 OAuth 提供商都使用一个电子邮件地址进行初始验证,但是,用户可以拥有多个,实际上有些鼓励您将它们作为备份。
    因此,电子邮件不是识别用户的好“钥匙”。
    您的解决方案可能是拥有一个包含您自己的内部 ID 的表,并将其与 OAuth 提供者的唯一用户标识相关联:一些使用电子邮件地址,另一些使用屏幕名称或类似名称。
    这将允许用户在您的站点上拥有多个 OAuth 验证器。 我通过 Linkedin、Twitter、Amazon、Google+、Microsoft 和 Facebook 实现了这一点。
    另外,我们的用户可以使用他们的域帐户登录,但这是另一回事...

    【讨论】:

    • 您能分享一个您在 Github 上实现的示例吗?
    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多