ASP.NET成员资格 - 登录在本地工作,在Azure上失败

时间:2011-12-07 13:09:22

标签: asp.net-mvc-3 azure asp.net-membership membership-provider azure-sql-database

我正在开发一个MVC3网站,我对ASP.NET成员资格有一个令人费解的问题。我正在使用连接到SQL Azure数据库的System.Web.Providers 1.0.1。

就像现在一样,在Azure下正常运行时,在Compute Emulator下运行时登录的用户名/密码会失败。我可以看到它正在使用正确的数据库,因为会员数据库中的Failed Password Attempts计数器正在更新。

1 个答案:

答案 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以正确的格式生成随机密钥。