以前有变化与非asp.net文件的方式asp.net授权/认证的交易?(Has there been

2019-10-29 13:24发布

每当我在过去asp.net认证/授权的工作,我能记住它永远不会用于保护的.htm的.js .css文件(实际上,不是由asp.net ISAPI DLL处理的任何文件)。

一段时间做其他的工作后,我现在已经回来使用VS2010做一些web开发,这个时候,现在情况正好相反。 它看起来好像所有的文件被固定,因为我的登录页面上的图像和.js文件不工作。

我的问题是,是我对最初的假设asp.net如何非文件处理错了吗? 如果没有,什么时候这种变化发生的呢? 以前有在VS2010开发服务器的变化,现在意味着所有文件都通过asp.net处理?

非常感谢。

编辑补充:

我刚刚注意到,当我从本地IIS服务器上运行我的项目,非asp.net文件(例如图像和.js文件)并不安全。 不过,从VS开发服务器上运行,当他们。 显然,这下到配置IIS和开发服务器之间的差异。 这使我另一个问题..是有可能配置VS开发服务器?

Answer 1:

不,它不是。 它是如何工作的defualt在IIS 6中(旧的),并在IIS7 +采用经典的管道,但它可以通过路由通过ASPNET ISAPI的所有内容进行更改。

如果您使用的IIS7 +或VS发展论坛的Web服务器(卡西尼)综合管线的所有请求都通过asp.net认证路由。



Answer 2:

因为我已经发现了一些有关此问题的详细信息。

IIS 7中集成的管道模式确实会通过相同管道的asp.net内容处理所有文件的请求,这意味着非授权的文件asp.net的行为会发生变化。

但是,为了保持向后兼容性,授权已设置了一个前提条件,会忽略任何不asp.net内容。 这将创建的行为并没有改变外观。

如果你想改变这种行为并确保非asp.net的内容,您可以通过添加以下到Web.config覆盖此前提。

<system.webServer>
  <modules>
    <remove name="FormsAuthenticationModule" />
    <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule"  />
    <remove name="UrlAuthorization" />
    <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
    <remove name="DefaultAuthentication" />
    <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
  </modules>
</system.webServer>

这将有效消除的HttpModules他们的前提和沿重新添加它们离不开它。

卡西尼号设置为使用集成的管道模式,它不具有向后兼容性的前提条件。 这意味着,如果你使用的是与窗体身份验证的VS2010开发服务器,你必须在这个问题上没有选择,非asp.net的内容将永远是安全的。



文章来源: Has there been a change to the way asp.net authorization / authentication deals with non asp.net files?