【问题标题】:Merging OAuth accounts in ASP.NET Identity Authentication system在 ASP.NET 身份验证系统中合并 OAuth 帐户
【发布时间】:2014-07-01 07:07:00
【问题描述】:

我最近开始使用 OAuth 在单页应用上实施身份验证。我从使用新身份验证系统的 ASP.NET 单页应用程序 Visual Studio 模板开始。

我不得不为这个应用程序重写整个前端,并且已经慢慢开始理解使用由模板生成的 AccountController 端点的身份验证流程。我是基于声明的身份的新手,所以它有点像第一次,但我一直在慢慢消化它。

但是,似乎不支持将多个外部帐户与单个本地帐户的链接合并。更熟悉新系统的人能否就如何为此建立支持发表评论。这将有助于使用系统当前自己的域语言(IdentityUserIdentityUserLoginExternalLoginData 等)来解释如何处理 3 个流 described in this answer

换句话说,我正在寻找重新措辞更详细并与 ASP.NET 身份验证系统使用的域模型相关的答案。

【问题讨论】:

  • 您可以将 oauth 访问代码存储到 UserClaims 表中。这就是你如何实现它。

标签: asp.net authentication oauth claims-based-identity asp.net-identity


【解决方案1】:

因此,为了将链接的答案映射到身份:

IdentityUser 是本地用户(UserId 是本地用户的键) IdentityUserLogin 是将本地用户链接到第三方登录的行(oauth/open id) ExternalLoginData 只是应用层使用的一个容器类。

通常在本地(创建用户名/密码)或外部(将新帐户链接到第 3 方登录)进行注册。

这两个流程都首先创建一个 IdentityUser。本地密码流不需要 IdentityUserLogin,因为密码哈希存储在 IdentityUser 本身内部。第 3 方流程需要一个额外的步骤,使用与 IdentityUser 的 userId 关联的适当第 3 方标识符创建 IdentityUserLogin,以便将来使用第 3 方登录工作进行登录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多