【问题标题】:Convert from ASP.NET membership to the new ASP.NET Identity API从 ASP.NET 成员身份转换为新的 ASP.NET Identity API
【发布时间】:2013-10-31 11:38:18
【问题描述】:

我正在考虑将当前使用 ASP.NET 成员身份进行身份验证和授权的现有 MVC 4 转换为新的 ASP.NET Identity 模型,该模型现在可用于 MVC 5 以及最近随 VS 2013 发布的类似模型。除了升级到MVC 5,是否有人想过将应用程序转换为对现有用户影响最小的新框架需要什么?

理想情况下,我希望保留他们的密码哈希值和盐值,以免在转换后强迫用户更改密码。此外,有人谈到将联邦作为某些客户端的备用登录名,因此我也需要在新系统中使用声明功能。

任何反馈都将不胜感激。

【问题讨论】:

    标签: asp.net-mvc asp.net-membership asp.net-identity


    【解决方案1】:

    迁移用户帐户基本上有两种基本方法:

    • 一次性完成:为此,散列算法“配置”需要在两个系统上相同(如果使用“单向散列”,通常是这样),因为您无法知道此类迁移期间的用户密码。您所能做的就是将数据从 A 复制到 B。
    • “滚动”:一次移动一个帐户,更具体地说,在登录阶段,当你碰巧知道用户的密码时,你可以用它做几乎任何事情(比如创建一个新的哈希并存储它别的地方)。但是,缺点是您需要在较长时间内保持新旧身份验证系统正常运行(取决于所有用户登录需要多长时间)。

    如果您的 MVC 4 项目使用默认的“简单成员”提供程序,好消息是使用的哈希算法是相同的。简单会员是开源的,这里是加密代码:

    https://github.com/aspnetwebstack/aspnetwebstack/blob/master/src/System.Web.Helpers/Crypto.cs

    不幸的是,新的身份系统不是开源的,但事实证明它使用相同的算法(耶!)——只需复制密码哈希,它就可以工作(不用担心盐——它包含在哈希“blob”中)!!! 因此,“批量”迁移绝对是可能的。

    但是,我强烈建议您不要这样做。新的身份系统似乎在不断变化,所以目前等待几周可能是个好主意。例如,源代码可能会变得可用(所以我终于可以看到“SecurityStamp”值是如何工作的以及它的用途:)

    OTOH,如果您使用旧的“简单成员资格”(MVC4 之前)身份验证,它使用完全不同的哈希算法(SHA256、IIRC),因此没有快速迁移的方法 - 您将必须等待所有用户登录才能将他们的帐户移动到新系统。 (当然,您可以通过向他们发送一封内容丰富的电子邮件,说明他们为什么应该尽快这样做,从而加快这一过程:)

    我希望这会有所帮助。

    Wrt Federation -- 我不知道 :)

    【讨论】:

    • 我们刚刚遇到了同样的情况,我们通过将旧用户复制到新数据库来解决它,给他们一个固定密码(一起复制的几个随机 GUID),当我们验证日志时-in,我们检查用户的当前密码是否是那个长的 GUID。如果是,我们会向他/她提供一条消息和“找回您的密码”屏幕,他们可以在其中输入他们的用户名,这会发送一封电子邮件,他们可以在其中通过 URL 更改密码。希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 2023-04-08
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多