我遇到了一个奇怪的问题。我正在Visual Studio 2013中使用最新的MVC5。我正在尝试创建一个托管匿名API的站点,以及一个需要通过Windows身份验证的Intranet域凭据的管理 Jmeter 板。通过IIS Express运行时一切正常,就像我所期望的那样,但在真实的的IIS中托管时却不正常。
当托管在真实的IIS中时,它会给我一个登录框,就像我期望的管理员部分一样,但它不接受我的登录,并不断提示我。我知道这肯定是正确的用户名和密码。你知道为什么会发生这种情况吗?
我在Windows功能中安装了Windows身份验证,并在IIS中为站点打开了Windows身份验证。
下面是我的设置..
[Authorize]
public class DashboardController : Controller
<add key="EnableSimpleMembership" value="false" />
<authentication mode="Windows"/>
<authorization>
<allow users="?" />
</authorization>
</system.web>
<location path="gsapi">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true"/>
<windowsAuthentication enabled="true"/>
</authentication>
</security>
</system.webServer>
</location>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
1条答案
按热度按时间bmp9r5qi1#
有一个安全功能会试图拦截对服务器的反射攻击。这些攻击基本上是一种“中间人”攻击,攻击者对两个试图进行身份验证的参与系统执行质询-响应协议。
当您的服务器使用Map到回送地址的主机名时,试图保护您免受这些攻击的安全功能无法区分合法请求和欺诈请求。其症状是所有质询响应尝试都将失败。
您可以选择在注册表中指定主机名或禁用环回检查(不推荐)。
评论中链接的知识库文章提供了有关如何更改以解决此问题的具体说明:http://support.microsoft.com/kb/896861
--编辑日期:2022年8月31日--
原来的MSKB URL现在已经过期,但幸运的是,它在此之前已经存档:
https://web.archive.org/web/20140212102642/http://support.microsoft.com/kb/896861
上面写着:
当您浏览使用集成身份验证并且承载在IIS 5.1或更高版本上的网站时,收到错误401.1
有两种方法可以解决此问题,请根据您的具体情况使用以下方法之一。
**方法1:**指定主机名(如果需要NTLM身份验证,则为首选方法)
要指定Map到环回地址并可以连接到计算机上的网站的主机名,请按照下列步骤操作:
DisableStrictNameChecking
注册表项设置为1。281308连接到基于Windows 2000或Windows Server 2003的计算机上的SMB共享可能无法使用别名
BackConnectionHostNames
,然后按Enter键。BackConnectionHostNames
上按一下鼠标器右击,然后按一下修改。**方法2:**禁用环回检查(不太推荐的方法)
第二种方法是通过设置
DisableLoopbackCheck
注册表项来禁用环回检查。要设置
DisableLoopbackCheck
注册表项,请按照下列步骤操作:DisableStrictNameChecking
注册表项设置为1。281308连接到基于Windows 2000或Windows Server 2003的计算机上的SMB共享可能无法使用别名
DisableLoopbackCheck
,然后按Enter。DisableLoopbackCheck
,然后单击修改。