我有一个经典的 ASP 应用程序,目前使用在 IIS 6 上运行的 ASP.NET 表单身份验证进行保护,问题是我们的目的是要求此应用程序使用 Entrust TruePass 实现单点登录安全模型,我相信它使用客户端证书。这可以使用 ASP.NET Http 模块实现还是我必须编写一个 ISAPI 过滤器?还有其他选择吗?
2 回答
为了触发 HttpModule,您必须让 IIS 将请求发送到 aspnet_isapi.dll,然后再发送到常规的 asp.dll。在大多数情况下,如果 .net 中有一个端点,它不会将请求传递回 IIS,但在 IIS6 中,您可以为通配符定义一个处理程序,请参阅这篇关于使用表单身份验证保护非 .net 内容的文章https://web.archive .org/web/20111127051259/http://www.15seconds.com/issue/070104.htm
所以你要做的是创建你的模块,在 web.config 中注册并使用它来进行身份验证,只要端点不匹配任何 .net 将处理的东西,它就应该让它回到 IIS 去到 asp.dll
[以上链接来自 2011 年 11 月的 Internet Archive。文章之前位于http://www.15seconds.com/issue/070104.htm ]
首先让我声明,我对 HTTPModules 了解不多,但我认为您可以编写自己的 IHttpModule 实现来处理 TruePass。有关详细信息,请参阅此链接:MSDN HttpModules。
根据我的经验,在经典 ASP 和 .NET 之间来回切换的最大麻烦是处理 Session 信息。.NET 无法读取存储在经典 ASP 会话变量中的内容,反之亦然。但是由于您的 FormsAuthentication 很可能使用 cookie,因此您现在可以来回切换。
我不确定其他选择。如果您的业务要求是保留经典的 asp 代码并使用 TruePass,那么我认为您可以使其工作。
希望有帮助。