如何在ASP.NET中使用ASP经典身份验证?

时间:2011-12-06 15:20:48

标签: c# asp.net sql-server authentication asp-classic

我有一个在ASP classic中实现的Web应用程序。现在我们想迁移到ASP.NET,但由于应用程序非常庞大,我们无法立即迁移。相反,我们决定逐步添加和替换ASP.NET位。

我知道可以对ASP经典使用ASP.NET身份验证,如下所述: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页面?如果没有标准的方法,你将如何实现这样的事情?

由于

1 个答案:

答案 0 :(得分:1)

如果您可以通过ASP.NET FormsAuthentication模块对其进行解密的方式加密Classic ASP代码中的有效票证,那么将考虑具有此类票证(存储在cookie或URL中)的用户在ASP.NET请求管道中进行身份验证。

以下是有关如何使用静态FormsAuthentication.Encrypt方法手动加密的文档:

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

这说明票证真的没什么特别,基本上就是用户名,到期日期。请注意,您还会在故障单中存储一些额外的用户数据。

当然,这仍然没有给我们实际的加密算法。这取决于web.config中的配置,特别是<machineKey> - 元素。您应该明确设置 decryptionKey 属性,因为您需要在Classic ASP代码中使用相同的密钥。

MSDN: machineKey element

您还应该设置 decryption 属性,以便在Classic ASP代码中使用相同的算法(例如DES)。如果您可以支持Classic ASP代码中的内置解密算法,则可以根据需要创建自定义解密算法。

你最终会得到这样的配置:

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

这就是我实现它的方式。