是否可以使用 Windows 身份验证禁用 ASP.net 应用程序的一个或多个子文件夹上的 Windows 身份验证?
例如:
一个网站包含几个其他文件夹,其中包含整个应用程序的各个部分:/frontend、/backend、/login
bin文件夹与这些子文件夹位于同一级别,即网站的根目录。
所有这些子文件夹都包含使用位于网站根目录的 bin 文件夹中的二进制文件的页面。
用户访问后端文件夹中的页面时必须输入 Windows 凭据,但访问登录或前端文件夹中的页面时则无需输入。
我正在使用 IIS7
有任何想法吗?
答案1
找到了解决方案:
调整了 applicationHost.config 文件,并将 anonymousAuthentication 和 windowsAuthentication 部分条目的“overrideModeDefault”更改为“Allow”
<section name="anonymousAuthentication" overrideModeDefault="Allow" /> <section name="windowsAuthentication" overrideModeDefault="Allow" />
在 web.config 中为每个需要从 Windows 身份验证中排除的文件夹/文件添加了位置标签
<location path="pathToDirOrFile"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" /> <windowsAuthentication enabled="false" /> </authentication> </security> </system.webServer> </location>
确保每个文件夹都包含一个单独的 web.config 文件,用于禁用身份模拟
<configuration> <system.web> <identity impersonate="false" /> </system.web> </configuration>
答案2
您可以使用 web.config 中的位置标记来控制身份验证,或者将另一个 web.config 放入相关子文件夹中,指定您需要应用的设置。
您还可以控制对 IIS 中资源(文件夹或单个文件)的访问,因此您需要确保没有冲突的规则。