我正在开发一个MVC3网站,我对ASP.NET成员资格有一个令人费解的问题。我正在使用连接到SQL Azure数据库的System.Web.Providers 1.0.1。
就像现在一样,在Azure下正常运行时,在Compute Emulator下运行时登录的用户名/密码会失败。我可以看到它正在使用正确的数据库,因为会员数据库中的Failed Password Attempts计数器正在更新。
答案 0 :(得分:28)
由于this article by David Hoerster中的一些信息,我将其追踪了下来。问题是Azure上的默认密码哈希算法与.NET 4.0默认值不同。它在Azure上设置为SHA1,HMACSHA256是4.0上的新标准设置。
可以通过在web.config中明确指定哈希类型来解决此问题。如果您决定使用HMACSHA256之类的方法,请确保您还指定了机器密钥 - 否则您将遇到类似的问题,因为自动生成的机器密钥因服务器而异。
您需要更改的配置元素是< machinekey> 下的< machinekey> :
<machineKey decryptionKey="PUT_DECRYPTION_KEY_HERE"
validationKey="PUT_VALIDATION_KEY_HERE"
decryption="AES"
validation="HMACSHA256" />
您可以使用this machine key generator以正确的格式生成随机密钥。