我在生产中有一个现有的应用程序,它使用 SqlMembershipProvider 并具有指定的机器密钥:
<machineKey validationKey="..." decryptionKey="..."
validation="SHA1" decryption="AES"/>
它目前在 .Net 2.0 AppPool 下运行。
我正在编写一个必须使用现有数据库的新应用程序,我有该数据库的备份。我正在尝试让 SqlMembershipProvider 使用它(它确实如此),但我无法让已知的用户名/密码正常工作。此帐户在 prod 中工作,并且两个数据库(prod 和 mine)上的密码 hash 和 salt 相同。但是,在 SqlMembershipProvider 将数据库中的密码与输入的散列密码进行比较时,它们并不相同。
本文建议在 .Net 4.0 中使用 ASP.Net 中的默认散列算法进行重大更改: http ://www.asp.net/learn/whitepapers/aspnet4/break-changes
但是,我已经按照建议指定了机器密钥。此外,我剥离了 .Net 4.0 组件并将其放回 3.5(即 CLR 2),输入密码的哈希值仍然相同。
此外,我尝试将这个新的临时应用程序重新部署到同一服务器生产上,但它仍然无法登录(尽管我无法验证它是否由于密码哈希不匹配而失败)。
我还能在这里尝试什么?