在IIS6中,如何提供对远程服务器上的静态文件的身份验证访问

时间:2010-02-08 22:14:20

标签: iis authentication iis-6 forms-authentication isapi

我们有一个ZIP文件库,我们希望在ASP.NET站点上下载。

这些文件位于可从网络农场访问的NAS设备上。

这是我们最初的策略:

  1. 将IIS虚拟目录映射到路径/ zipfiles上的共享驱动器
  2. 用户可以在提供URL时下载zip文件
  3. 但是,如果用户共享文件的链接,则任何人都可以下载它们。我们希望在我们的站点中使用ASP.NET表单身份验证来在启动文件传输之前验证用户的请求。

    一些问题: 对zip文件的请求由IIS处理,而不是ASP.NET。所以它不受表单身份验证的限制。 此外,我们不希望ASP.NET处理请求,因为它使用了一个ASP.NET线程,并且不能自由下载大文件。因此,配置asp.net dll来处理* .zip请求不是一种选择。

    有关于此的任何想法吗?

    我们抛出的一个想法是: 初始下载请求将是ashx处理程序。验证后,此处理程序将生成一个下载令牌,该令牌将保存到数据库中。然后,用户被重定向到带有QueryString中附加的标记的文件(例如/files/xyz.zip?token=123456789)。 ISAPI插件将用于检查令牌。此外,令牌将在x时间后到期。 有什么想法吗?我还没有实现ISAPI插件,所以我不确定这是否可行。

    我想避免自定义编码,因为安全性是一个问题,我更喜欢使用经过时间考验的解决方案。

2 个答案:

答案 0 :(得分:0)

表单身份验证不能没有ASP.NET。

如果您根本不想使用ASP.NET,则可以在文件上定义NTFS权限并为用户创建域帐户。这将成为一场真正快速的噩梦。

要处理大量下载到ASP.NET,您可以查看Comet。这基本上是IHttpHandler,但你需要使用另一个ThreadPool(不是ASP.NET)。我建议看看Smart Thread Pool

几个月前,我将两者结合起来创建了一个下载速度限制应用程序,现在运行非常顺利。

答案 1 :(得分:0)

我阅读并理解您使用处理程序管理静态文件的问题,但如果您使用异步处理程序,那么您将不会阻止。

我认为您可能会以合理的价格获得您想要的结果。