2013-01-03 30 views
4

我正在使用HMACSHA256在Web場環境中進行消息身份驗證。獲取當前MachineKey或equivilent,用於HMAC(在Web場中)

在網絡農場內,每臺機器都有相同的機器密鑰,所以ViewState可以跨機器工作,但是,我需要做HMAC消息認證,這將跨機器工作,所以我認爲,因爲所有機器都使用相同的機器機器密鑰,應該有一種方法可以從中派生出用作HMAC密鑰的密鑰。

我注意到,從.NET 4.0開始有MachineKey類,但是,我堅持使用.NET 3.5,這對我來說是不可用的。

有沒有辦法讓一些排序鍵在所有機器上都沒有產生我自己的,在ASP.NET 3.5環境中使用?

編輯

我實際上並不需要的機器密鑰本身,只是從機器鍵(或同等學歷)得到的確認鍵。

回答

7

您可以從web.config中讀取機器密鑰。此鏈接顯示如何操作:http://aspnetresources.com/blog/how_to_read_auto_generated_machinekey

請記住,文章的作者讀取生成的機器密鑰 - 因此您必須在代碼中進行一些更改。

我只是多讀了一篇文章,看到它使用了反射,如果您將機器密鑰存儲在web.config中,反射就不是必需的。 本質上它分解到這條線:

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

謝謝,這給了我我需要的東西。反射位是必需的,因爲我必須從'ValidationKeyInternal'獲取實際的機器密鑰值。 – Matthew

+5

鏈接已損壞:( –

+1

如果您不是被困在.NET 3.5中,則可以使用MachineKey類 – TGlatzer