asp.net-mvc-4 - 使用 ASP.NET 将多个基于声明的身份提供者关联到一个用户

标签 asp.net-mvc-4 claims-based-identity .net-4.5 acs

在将 .NET 4.5 框架与 Azure 访问控制服务 (ACS) 结合使用的 ASP.NET MVC 4 应用程序中,我想为用户提供多种身份验证可能性(即 Google、Facebook、Windows Live 等)。将单个用户关联到多个身份提供者的“最佳实践”是什么?

例如,假设用户一天使用 Google 登录,然后第二天转到另一个浏览器并使用 Facebook 登录。我怎么知道将 Facebook 登录与之前的 Google 登录关联到同一用户?

最佳答案

看看 stackoverflow 本身就是一个很好的例子。单击您的用户配置文件,然后选择“我的登录”。

当用户创建他们的帐户时,他们会选择您想使用哪个身份提供者登录。在后台,您的应用程序会创建一个新的特定于站点的唯一用户 ID,并将其与 3rd 方提供的唯一 ID 相关联。 (您可能会使用电子邮件,但大多数身份提供商还会提供一个不会更改的唯一用户 ID 声明,即使用户更改了他们的电子邮件)

现在,在用户登录后,他们有一个帐户管理控制面板,通过它他们可以建立到其他身份提供者的附加链接。

我看到了实现这一目标的两种选择:

  • 让您的 MVC 应用程序保留帐户链接。当用户登录时,您使用第 3 方唯一 ID 声明查询您的帐户链接存储并解析您站点特定的唯一用户 ID。
  • 使用 ACS 规则引擎。您将为每个帐户链接创建一个规则。例如,假设我可以使用 gmail 或 liveid 登录,并且我的唯一 ID 是 1234。两条规则如下所示:
  • google + me@gmail.com --> 输出用户 ID 声明 1234
  • liveId + me@live.com --> 输出用户 ID 声明 1234

  • 对于唯一 ID 输出声明类型,您可以从可用声明类型中进行选择或指定您自己的声明类型。 ACS 有一个 OData based management service您可以使用它从您的 MVC 应用程序以编程方式创建这些规则。这是一个 code sample .

    关于asp.net-mvc-4 - 使用 ASP.NET 将多个基于声明的身份提供者关联到一个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11077271/

    相关文章:

    css - 在 IIS 中部署 MVC4 应用程序后背景图像不工作

    c# - asp.net core如何向用户添加声明

    c# - C#中的工厂模式

    .net - Entity Framework 代码第一个自加入, 'Multiplicity is not valid in Role'

    javascript - 如何使用 jquery 添加或删除局部 View Asp.net mvc?

    asp.net-mvc - 为什么 MVC Post (ViewModel) 不会使用异步返回更新后的表单?

    asp.net-mvc - 在asp mvc中使用json上传图像

    asp.net-core - 授权失败。未满足这些要求 : ClaimsAuthorizationRequirement:Claim. 类型

    c# - 如何在 ASP .NET CORE Identity 中通过 SignInManager 登录后获取用户声明?

    c# - 如何将光标置于C#中Datepicker控件的第一个位置?