簡體   English   中英

如何使用RSA加密/解密ASP.Net表單身份驗證票證

[英]How can I use RSA to Encrypt/Decrypt ASP.Net Forms Authentication Ticket

除了可以使用FormsAuthentication.Encrypt / FormsAuthentication.Decrypt之外,還可以使用計算機密鑰存儲區中的現有RSA容器對票證進行加密/解密。

原因是我正在開發的ASP.Net應用程序打算在多個負載平衡的服務器中使用。 因此,我需要將機器密鑰復制到所有機器上的所有web.config文件中。 由於我們已經將非對稱加密(RSA)用於其他目的,因此我們已經通過bat文件和密鑰容器xml在所有服務器中自動安裝了公共RSA密鑰容器。 由於該機制已經到位,我也想使用相同的RSA密鑰容器來加密/解密表單身份驗證票。

  1. 這可能嗎? 如果是這樣,我該如何覆蓋現有行為以實現此目的。
  2. 如果可能的話,您是否看到使用RSA代替標准加密的任何缺點?

是的,但這需要一些工作。

您將需要覆蓋/替換.NET附帶的標准身份驗證模塊,並復制所有現有功能,除了對您要使用的RSA Encrypt / Decrypt方法的調用之外。

請參閱http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.encrypt.aspx

如果要使用所有標准內置登錄頁面,則還需要對其進行編輯。

作為模板,檢查FormsAuthenticationTicket的源,您將看到如何構造包含參數的字符串,該字符串包含UserID,Expiry Date等參數,然后將該字符串傳遞給Encrypt方法,該方法隨后用作cookie值。

然后,您的新身份驗證模塊將必須逆轉該加密並像以前一樣驗證用戶。

相對而言,這是一筆相當多的工作,取決於您要使用RSA相對於所使用的標准加密方法的嚴重程度(它們已經提供了一些強大的加密方法,請參見http://www.sourcetree.net/sourcetree。 /Development/Aspnet%20Examples/GenerateMachineKeyForWebConfig.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM