获取HMAC的当前MachineKey或等效值(在Web场中)

我正在使用HMACSHA256在Web场环境中进行消息身份validation。

在web-farm中,每台机器都有相同的机器密钥,因此ViewState可以跨机器工作,但是,我需要进行跨机器的HMAC消息认证,所以我认为由于所有机器都使用相同的机器密钥,因此应该是一种从中导出密钥以用作HMAC密钥的方法。

我注意到在.NET 4.0中有MachineKey类,但是,我仍然坚持使用.NET 3.5 ,这对我来说是不可用的。

有没有办法在不生成自己的机器的情况下获得在所有机器上都相同的排序键,以便在ASP.NET 3.5环境中使用?

编辑

我实际上并不需要机器密钥本身,只需要从机器密钥(或等效的)派生的validation密钥。

您可以从web.config中读取机器密钥。 此链接显示了如何执行此操作: http : //aspnetresources.com/blog/how_to_read_auto_generated_machinekey

请记住,文章的作者会读取生成的计算机密钥 – 因此您必须对代码进行一些更改。

我只是阅读了一篇文章并看到,如果将机器密钥存储在web.config中,它会使用reflection,这不是必需的。 基本上它分解为这一行:

MachineKeySection section = (MachineKeySection) ConfigurationManager.GetSection ("system.web/machineKey");