我正在使用HMACSHA256在Web场环境中进行消息身份验证。
在web-farm中,每台机器都有相同的机器密钥,因此ViewState可以跨机器工作,但是,我需要进行跨机器的HMAC消息认证,所以我认为所有机器都使用同一台机器键,应该有一种从中导出密钥的方法,用作HMAC密钥。
我注意到从.NET 4.0开始有MachineKey类,但是,我仍然坚持使用 .NET 3.5 ,而这对我来说无法使用。
有没有办法在不生成自己的机器的情况下获得在所有机器上相同的排序键,以便在 ASP.NET 3.5 环境中使用?
我实际上并不需要机器密钥本身,只需要从机器密钥(或等效密钥)派生的验证密钥。
答案 0 :(得分:7)
您可以从web.config中读取计算机密钥。此链接显示了如何执行此操作:http://aspnetresources.com/blog/how_to_read_auto_generated_machinekey
请记住,文章的作者会读取生成的计算机密钥 - 因此您必须对代码进行一些更改。
我只是阅读了一篇文章,并且看到它使用反射,如果将机器密钥存储在web.config中,则不需要反射。 基本上它分解为这一行:
MachineKeySection section = (MachineKeySection)
ConfigurationManager.GetSection ("system.web/machineKey");