处理多个第 3 方 oauth 提供商之间的帐户名称冲突
Handling account name collisions between multiple 3rd party oauth providers
我将 OWIN 与 MVC 5 结合使用来处理多个第 3 方身份提供者,包括 Facebook、LinkedIn 和 Google 帐户。
我的 ApplicationUser 当前正在继承默认的 IdentityUser,这似乎对电子邮件字段施加了唯一性约束。
如果我使用 Facebook 登录我的网站,我的用户名设置为 "john@hotmail.com"。然后,如果我返回该站点并尝试使用 google 进行身份验证,毫不奇怪,我会收到以下两个错误:
Name john@hotmail.com is already taken.
Email 'john@hotmail.com' is already taken.
理想情况下,我会将这两个身份合并到一个启用了两种类型的 oauth 方法的帐户中。
我对 Microsoft Identity 模型不是很熟悉 - 是否有实现我目标的阻力最小的途径?
我担心的一个问题是处理攻击者使用 "john@hotmail.com" 注册一个 linkedin 帐户(如果我没有)并使用该方法尝试对我的站点进行授权的情况。在那种情况下,每次用户在合并之前尝试添加新的身份验证方法时,我都需要发送验证电子邮件。
编辑:
进一步挖掘我发现我的用户配置定义了这些选项
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
想知道这是否可取。如果最终用户将不同的电子邮件地址应用于他们的 Facebook 和 LinkedIn 个人资料,它可能只会造成更大的混乱。
UserManager
公开了 AddLoginAsync
方法,目的是为现有用户添加另一种登录方法。在我的身份验证服务器中,我允许用户通过任何方式登录,只要电子邮件地址相同即可。
关于创建假帐户,任何提供 OAuth2 授权服务的人都应该在允许使用这些服务之前验证电子邮件。 Google 和 Facebook 有;我假设 LinkedIn 也这样做但不确定。提供者也可能公开 email_verified 声明或类似声明,您可以检查这些声明以确保安全。
我将 OWIN 与 MVC 5 结合使用来处理多个第 3 方身份提供者,包括 Facebook、LinkedIn 和 Google 帐户。
我的 ApplicationUser 当前正在继承默认的 IdentityUser,这似乎对电子邮件字段施加了唯一性约束。
如果我使用 Facebook 登录我的网站,我的用户名设置为 "john@hotmail.com"。然后,如果我返回该站点并尝试使用 google 进行身份验证,毫不奇怪,我会收到以下两个错误:
Name john@hotmail.com is already taken.
Email 'john@hotmail.com' is already taken.
理想情况下,我会将这两个身份合并到一个启用了两种类型的 oauth 方法的帐户中。
我对 Microsoft Identity 模型不是很熟悉 - 是否有实现我目标的阻力最小的途径?
我担心的一个问题是处理攻击者使用 "john@hotmail.com" 注册一个 linkedin 帐户(如果我没有)并使用该方法尝试对我的站点进行授权的情况。在那种情况下,每次用户在合并之前尝试添加新的身份验证方法时,我都需要发送验证电子邮件。
编辑:
进一步挖掘我发现我的用户配置定义了这些选项
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
想知道这是否可取。如果最终用户将不同的电子邮件地址应用于他们的 Facebook 和 LinkedIn 个人资料,它可能只会造成更大的混乱。
UserManager
公开了 AddLoginAsync
方法,目的是为现有用户添加另一种登录方法。在我的身份验证服务器中,我允许用户通过任何方式登录,只要电子邮件地址相同即可。
关于创建假帐户,任何提供 OAuth2 授权服务的人都应该在允许使用这些服务之前验证电子邮件。 Google 和 Facebook 有;我假设 LinkedIn 也这样做但不确定。提供者也可能公开 email_verified 声明或类似声明,您可以检查这些声明以确保安全。