使用 Windows 身份验证禁用 ASP.NET 应用程序子文件夹上的身份验证

使用 Windows 身份验证禁用 ASP.NET 应用程序子文件夹上的身份验证

是否可以使用 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 中资源(文件夹或单个文件)的访问,因此您需要确保没有冲突的规则。

相关内容