【问题标题】:Site-level forms authentication w/IIS7使用 IIS7 的站点级表单身份验证
【发布时间】:2014-01-10 22:14:36
【问题描述】:

我花了一整天的时间试图让它工作,尽管它似乎是 IIS7 的一个开箱即用的功能。我就是想不通我做错了什么。

我想为表单身份验证配置一个网站(例如,默认网站,这很好)。我的意思是说,无论在该网站下配置了多少 Web 应用程序,任何时候匿名用户尝试访问受限资源时,他们都会被发送到同一个登录页面,该页面会收集他们的凭据并将其发送回资源他们一开始就想要。

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

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

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

令我惊讶的是,会发生什么 - 如果我关闭我想要保护的应用程序的匿名访问,而不是将我发送到在网站级别配置的登录页面,我只会在浏览器中看到一条未经授权的消息.如果我为受保护的应用程序开启匿名功能,则不会完成任何挑战,每个人都可以在不登录的情况下查看所有资源。

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

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

【问题讨论】:

    标签: asp.net authentication iis forms-authentication


    【解决方案1】:

    我不认为 asp.net 处理程序是为静态文件调用的,除非您将其配置为。在根配置中为 html 文件添加 handlers 部分将允许您的应用使用表单身份验证来处理 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>
    

    【讨论】:

    • 两件事 - 它实际上并没有回答我的全局问题,即“网站内配置的 Web 应用程序不应该都以相同的方式运行,并使用网站的身份验证方案吗?” .此外,我进行了这些更改,一切都以完全相同的方式进行,不快乐。
    • 您将根目录称为网站。是网站还是配置了应用程序池?我假设既然您在根目录配置了表单身份验证,那么您在那里有一个 Web 配置并将网站转换为 IIS 中的 Web 应用程序?
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多