【发布时间】:2011-01-27 16:30:47
【问题描述】:
我目前正在开发一个 .Net 应用程序,该应用程序向 IIS 服务器上托管的一些 Web 应用程序发出 HTTP 请求。该应用程序通过 ClickOnce 部署,在简单的网络架构上运行良好。
我们的一个客户有一个非常复杂的网络,其中涉及一个自定义身份验证服务器,用户必须首先在该服务器上登录自己才能进行身份验证并访问该网络上的其他应用程序。一旦在此服务器上通过身份验证,就会创建一个会话 cookie 并将其发送给用户。每次用户在网络的安全服务器上发出请求时,都会检查此 cookie 以授予用户访问权限。如果此 cookie 未随请求一起发送,则用户将被重定向到登录页面。唯一使用的浏览器是 Internet Explorer。
无法从我们的 .net 应用程序访问此 cookie,因为它是在用于登录用户的 Internet Explorer 进程之外的另一个进程中执行的,因此不会随我们的请求一起发送,因为服务器会重定向每个请求,因此无法完成。我们对登录页面的请求。
我通过使主控件 COM 可见并在带有标记的 HTML 页面上创建它来查看将我的应用程序嵌入到 Internet Explorer 中。它工作正常,但是当 ActiveX 控件发出 Web 请求时,不会发送之前在浏览器中设置的会话 cookie。
我希望会话信息的这种共享是自动的(尽管我并不真的相信)。所以我的问题是:是否可以在嵌入式 ActiveX 中访问此 cookie?如何?使用 .Net COM 互操作组件而不是“真正的”ActiveX 控件有什么不同吗?此外,是否有特定的安全词来描述这种行为(鉴于我根本不是安全主题方面的专家,缺乏适当的术语使得找到所需资源变得更加困难)?
我的目标是让我的应用程序的请求看起来与主机浏览器的请求相同,我认为将应用程序作为 ActiveX 控件嵌入到浏览器中是实现此目的的唯一方法,但是任何建议欢迎其他人这样做。
【问题讨论】:
标签: .net internet-explorer activex cookies com-interop