使用 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 应用程序的子文件夹的身份验证的主要内容,如果未能解决你的问题,请参考以下文章
表单身份验证、ASP.NET MVC 和 WCF RESTful 服务
处理 OAuth 2.0 身份验证 - 在 ASP.NET MVC 应用程序中获取令牌重定向令牌响应