具有IIS7的站点级表单身份验证

时间:2014-01-10 22:14:37

标签: asp.net authentication iis forms-authentication

我花了一整天的时间试图让它工作,尽管看起来它似乎是IIS7的开箱即用功能。我只是无法弄清楚我的错误。

我希望为表单身份验证配置一个网站(例如,默认网站,没问题)。我的意思是说,无论在此网站下配置了多少Web应用程序,只要匿名用户尝试访问受限资源,就会将其发送到同一登录页面,该页面收集其凭据并将其发送回资源他们首先想要的。

所以我在网站上设置了身份验证,如下所示 - 基本上全部关闭,除了:匿名(我假设需要打开以便不安全地看到不安全的东西),以及表单身份验证。我将表单身份验证配置为在已配置的应用程序中使用登录页面,因此:[default web site \ auth \ login.aspx]

我配置了一个不安全的应用程序,当然没问题。

我有另一个应用程序,它的根目录有一些不安全的内容([默认网站\ test \ readme.html]),另一个目录是我添加了一个具有<deny users="?"/>的配置文件(所以,[默认网站\ test \ secure \ readme.html])在配置文件中。当然我的意图是匿名用户尝试获取此目录中的资源,他们将被重定向到整个站点的登录页面。

令我惊讶的是,这会发生什么 - 如果我关闭了我想要保护的应用程序的匿名访问权限,而不是将我发送到网站级别配置的登录页面,我只是在浏览器中看到未经授权的消息。如果我为安全的应用程序打开电话,那么就不会有任何挑战,每个人都可以在不登录的情况下查看所有资源。

我在这里遗漏了什么吗?网站中配置的Web应用程序是否应该以相同的方式运行,并使用站点的身份验证方案?我是错误的这是一个功能还是我只是错误的事情来实现它?

我也(在玩了一段时间之后)在主网站的“错误页面”部分下设置登录页面以处理401状态,没有任何运气。

1 个答案:

答案 0 :(得分:0)

除非您将其配置为静态文件,否​​则我认为不会调用asp.net处理程序。在根配置中为html文件添加处理程序部分将允许您的应用程序使用表单身份验证来处理html文件。

  <system.web>
    <compilation>
      <buildProviders>
        <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
      </buildProviders>
    </compilation>    
 </system.web>

 <system.webServer>
    <handlers>
      <add name="html" verb="GET, HEAD, POST, DEBUG" path="*.html" type="System.Web.UI.PageHandlerFactory" />
    </handlers>
 </system.webServer>