【问题标题】:Are ASP.Net membership credentials portable?ASP.Net 会员凭证是否可移植?
【发布时间】:2013-12-09 19:56:41
【问题描述】:

为什么 ASP.Net 会员凭证存储在数据库中,不能在 (1) Web 应用程序和 (2) 机器之间移植?

两种情况--

  • 我们备份生产数据库并将其恢复到开发服务器。任何生产登录凭据都不能在开发服务器上使用,即使基础数据是几秒前从生产中恢复的。

  • 我们构建了一个新版本的应用程序(“v2”,我们称之为),并将其安装在不同网站下的生产数据库中(与生产应用程序一起 - “v1”),但相同的生产数据库。 所有登录凭据都不适用于该应用的 v2,即使它与同一个数据库通信,因此具有完全相同的成员数据。

web.config 文件中没有机器密钥。如果我忽略它,我假设它是从 machine.config 文件中冒出来的,这意味着每台机器应该是相同的,这意味着在同一台机器上与同一个数据库通信的两个 webapps(上面的第二种情况)应该共享凭据,对吗?

我们还检查了数据库中的应用程序名称和ID,它们在机器之间是相同的。

如果您重置密码,一切正常(使用新密码)。但这意味着每个人都必须重置密码,这并不理想。

似乎密码盐从数据库服务器更改为数据库服务器,从 Web 应用程序更改为 Web 应用程序。

编辑:

使用 ASP.Net 4.5 和 System.Web.Security.SqlMembershipProvider 4.0。

另一个编辑:

我已验证 PasswordFormat 为“Hashed”。此外,我检查了两个数据库之间的 Password 和 PasswordSalt 字段。它们是相同的。

解决方案:

web.config 中的哈希算法在两个应用之间设置不同。

【问题讨论】:

  • .Net 4.5。 System.Web.Security.SqlMembershipProvider,v4.0
  • 您能否将其编辑到您的问题中。这是相关的!

标签: asp.net asp.net-membership membership-provider


【解决方案1】:

两个 web 应用程序的哈希算法不同。一个使用默认的“SHA1”,另一个显式设置为“HMACSHA512”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多