如何迁移具有自动生成解密密钥的加密密码的 SQL 成员资格数据库?

如何迁移具有自动生成解密密钥的加密密码的 SQL 成员资格数据库?

我有一台服务器,其中的machine.config声明如下:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1"/>

未指定解密密钥,它是自动生成的。我要将其移至新服务器。如何迁移解密和验证密钥,以便数据库可以在新服务器上使用?

答案1

这取决于 ASP.NET 应用程序的编写方式。如果使用内置成员资格提供程序,您很可能运气不佳,因为成员资格提供程序每次都使用机器密钥来散列密码,假设它们被散列,或者它们可能只是被加密。

它还使用机器密钥进行会话状态和视图状态编码。

如果应用程序有自己的会员提供商,它甚至可能不会利用机器密钥,在这种情况下您可能能够恢复它们。无论哪种方式,恐怕都不太好。

您确实应该让开发人员在应用程序的 web.config 文件中插入自定义机器密钥,如果您也打算迁移到 Web 场,您也必须这样做。

答案2

我认为你做不到,至少除非你读取 machinekey 值的代码在您的应用程序中。

我非常确定密钥仅用于生成 sessionid,将应用程序移至使用相同数据库的新服务器不会有任何坏处。这是基于以下事实:应用程序池重新启动时会重新生成机器密钥,而应用程序池重新启动不会使之前存储的密码无效(我希望如此)。

这篇博客文章中有关于此主题的更多详细信息:http://blog.appharbor.com/2012/02/22/asp-net-forms-authentication-considered-broken

相关内容