【发布时间】: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