2011-12-06 29 views
0

我有一個在ASP經典中實現的web應用程序。現在我們要轉移到ASP.NET,但由於應用程序非常龐大,我們無法立即遷移。相反,我們決定在那裏逐步添加和替換ASP.NET位。如何在ASP.NET中使用ASP經典認證?

我知道,它有可能使用ASP.NET身份驗證與ASP經典如下所述:http://weblogs.asp.net/scottgu/archive/2007/03/04/tip-trick-integrating-asp-net-security-with-classic-asp-and-non-asp-net-urls.aspx

我需要的是完全相反的。有沒有辦法使用我們的ASP經典認證系統來保護ASP.NET頁面?如果沒有標準的做法,你將如何實現這樣的事情?

感謝

+2

只需重寫身份驗證以使其基於.NET即可。它也需要更少的時間。 –

+0

沒有標準的經典ASP認證。你必須有自定義的東西。 –

+0

您是否決定採用某種方法? –

回答

1

如果能以這樣的方式使ASP.NET FormsAuthentication模塊可以用這樣的票解密,然後用戶在加密的經典ASP代碼的一個有效票(存儲在cookie或該URL)將被視爲在ASP.NET請求管道中進行身份驗證。

下面是關於如何使用手動靜態FormsAuthentication.Encrypt方法加密文檔:

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

這說明票是真的沒有什麼特別的,基本上是用戶名,到期日期。請注意,您還在票證中存儲了一些額外的用戶數據。

當然,這仍然沒有給我們實際的加密算法。這取決於web.config中的配置,特別是<machineKey> -element。您應該明確設置解密密鑰屬性,因爲您需要在傳統ASP代碼中使用相同的密鑰。

MSDN: machineKey element

而且你還要設置解密屬性,讓你可以在你的經典ASP代碼中使用相同的算法(如DES爲例)。如果需要,您可以創建自定義解密算法,如果您可以支持傳統ASP代碼中的內置算法。

你最終會得到這樣的配置:

<machineKey decryptionKey="your key here" decryption="DES" /> 

這就是我將如何實現它。