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

Kje*_*jær 18 asp.net-membership azure membership-provider asp.net-mvc-3 azure-sql-database

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

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

Kje*_*jær 28

由于David Hoerster撰写的这篇文章中的一些信息,我追踪了它.问题是Azure上的默认密码哈希算法与.NET 4.0默认值不同.它在Azure上设置为SHA1,HMACSHA256是4.0上的新标准设置.

这可以通过在web.config中明确指定哈希类型来解决.如果您决定使用HMACSHA256之类的方法,请确保您还指定了机器密钥 - 否则您将遇到类似的问题,因为自动生成的机器密钥因服务器而异.

您需要更改的配置元素是<system.web>下的< machinekey >:

<machineKey decryptionKey="PUT_DECRYPTION_KEY_HERE"
            validationKey="PUT_VALIDATION_KEY_HERE"
            decryption="AES"
            validation="HMACSHA256" />
Run Code Online (Sandbox Code Playgroud)

您可以使用此计算机密钥生成器以正确的格式生成随机密钥.