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

Posted

技术标签:

【中文标题】使用 Windows 身份验证禁用对 ASP.NET 应用程序的子文件夹的身份验证【英文标题】:Disable authentication on subfolder(s) of an ASP.NET app using windows authentication 【发布时间】:2011-02-12 09:08:07 【问题描述】:

是否可以使用 windows 身份验证禁用 ASP.net 应用程序的一个或多个子文件夹上的 windows 身份验证?

例如:

一个网站包含几个包含整个应用程序部分的其他文件夹:/frontend、/backend、/login

bin 文件夹与这些子文件夹处于同一级别,即网站的根目录。

所有这些子文件夹都包含使用位于网站根目录的 bin 文件夹中的二进制文件的页面。

用户在访问后端文件夹中的页面时必须输入 Windows 凭据,但在访问登录或前端文件夹中的页面时则不需要。

我正在使用 IIS7

有什么想法吗?

【问题讨论】:

不让子文件夹应用程序本身。 (取决于 IIS 的版本) 【参考方案1】:

找到解决办法:

调整 applicationHost.config 文件并将“overrideModeDefault”更改为“Allow” 对于 anonymousAuthentication en windowsAuthentication 部分条目

            <section name="anonymousAuthentication" type="System.WebServer.Configuration.AnonymousAuthenticationSection" overrideModeDefault="Allow" />
            <section name="windowsAuthentication" type="System.WebServer.Configuration.WindowsAuthenticationSection" 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>

【讨论】:

这有一些注意事项:1) IIS 似乎需要一段时间才能识别 applicationHost.config 更改。 2)网站仍然提示输入用户名/密码,并且需要输入一些内容(用户:用户)。不知道如何绕过提示。【参考方案2】:

NTLM 身份验证通常在 IIS 中配置,因此您可以切换回这些文件夹的匿名身份验证。

【讨论】:

禁用 Windows 身份验证并启用匿名访问似乎并不能解决问题。我错过了什么吗? 问题是关于IIS7,这个答案的截图是IIS6。

以上是关于使用 Windows 身份验证禁用对 ASP.NET 应用程序的子文件夹的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

部署网站会禁用Windows身份验证

表单身份验证、ASP.NET MVC 和 WCF RESTful 服务

处理 OAuth 2.0 身份验证 - 在 ASP.NET MVC 应用程序中获取令牌重定向令牌响应

Sql Server 的sa用户被禁用

.Net Core WebAPI CORS 与 Windows 身份验证

禁用 cookie 时如何验证用户身份?