我有一个asp.net应用程序,使用aspnetsqlMembership提供程序加密/解密用户配置文件数据。现在,我们决定将我们的应用程序移到一个新的服务器上,但是当我试图创建一个新用户(加密)时,我在新的服务器上得到了这个错误:
在指定状态下使用的密钥无效
我已经尝试了: 1.我从旧服务器导入了证书,它似乎是好的/ 2.我检查了证书的安全权限,它们与旧服务器上的权限相同3.而且IIs上的机器密钥定义似乎是相同的。4.尝试将sqlmembership格式从加密更改为哈希,但仍抛出异常。
我花了很多时间试图解决这个问题。如果这里有人能帮我,我会很高兴的。谢谢,汉娜。
发布于 2019-07-14 02:04:34
SqlMEmbershipProvider密码的加密与证书无关。
默认情况下,根据配置中machineKey元素中提供的信息对
加密和散列密码进行加密或散列。请注意,如果为验证属性指定值3DES,或者未指定值,则将使用SHA1算法对哈希密码进行哈希处理。
可以使用membership元素(ASP.NET设置架构)配置元素的hashAlgorithmType属性定义自定义哈希算法。如果选择加密,则默认密码加密使用AES。您可以通过设置machineKey配置元素的解密属性来更改加密算法。如果要加密密码,则必须为machineKey元素中的decryptionKey属性提供显式值。在将加密密码与ASP.NET成员身份一起使用时,不支持decryptionKey属性的默认值AutoGenerate。
Microsoft Docs: SqlMembershipProvider.PasswordFormat Property
查看一下您的web.config文件。有专区吗?里面有什么值吗?
确保新服务器具有完全相同的保存值!
如果没有节或值...
您必须再次访问旧服务器!
在对当前的4.5框架进行了一些研究之后,
发现自动生成的键存储在HttpApplication.s_autogenKeys字节数组中。验证密钥是前64个字节,后跟24个字节的解密密钥。
@Mr-Curious为machineKey部分写了一个很好的键( answer on how to resolve the values ),如果它们不存在的话(AutoGenerated)。
https://stackoverflow.com/questions/56965756
复制相似问题