Windows身份验证在IIS 7.5中不起作用

div*_*ero 28 iis iis-7.5 c#-4.0 asp.net-mvc-3

我在使用Windows 7.5进行身份验证时遇到问题.该应用程序是在asp.net MVC 3中构建的内部站点.应用程序池使用特定的域用户,并且该站点使用Windows身份验证.每次我尝试启动该网站IE提示我登录.

如果我取消了足够的网站出现,搞砸了看,但它的我的名字与我的Windows登录显示在顶部.这告诉我该网站正在正确地获取我的Windows凭据.

我添加了网络本地用户对服务器上的inetpub文件夹的读取权限,现在它不会提示用IE 8登录.但是在Chrome上我得到此错误"错误338(net :: ERR_INVALID_AUTH_CREDENTIALS):未知错误. ".

它位于我们的Intranet站点区域中.我应该说这个,但我忘记了.该站点曾用于我们的旧开发服务器,但当我使用IIS 7.5升级到Win 2008 R2时,它停止了工作.曾经是2003年的IIS 6.0.

我想知道是否有人知道我还能尝试什么.在这一点上,我几乎在旋转我的车轮.

我已经尝试了下面链接中的所有解决方案,但没有一个解决了这个问题

http://forums.iis.net/t/1177154.aspx

http://forums.iis.net/t/1178188.aspx

使用集成的Windows身份验证接收登录提示

http://warnajith.blogspot.com/2011/06/iis-75-401-unauthorized-access-error.html

http://forums.asp.net/t/1639511.aspx/1

https://superuser.com/questions/128746/iis-asks-for-login-pass-when-accessed-using-hostname-but-not-when-localhost-is

http://ask.metafilter.com/183636/Prompted-for-a-username-and-password-when-browsing-to-an-IIS-virtual-directory

IIS 7和Windows身份验证

cap*_*o70 23

相关说明:如果您尝试在localhost上复制您的站点,并且启用了Windows身份验证但仍然失败,则解决方案是一些注册表黑客攻击以避免环回检查:

使用regedit,导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0向MSV1_0添加新的多字符串值并将其命名为BackConnectionHostNames添加您要使用的主机名.例如,"mysite.com".重新启动IIS.

来源链接

该值应该是Windows主机文件中的网站名称.

另外为了能够使用PHP的file_get_contents访问非经过身份验证的/ data文件夹,我必须将其添加到applicationHost.config文件中,以防止401错误.

<location path="mysite.com/data">
        <system.webServer>
            <security>
                <authentication>
                     <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
Run Code Online (Sandbox Code Playgroud)


div*_*ero 17

我找到了答案.它是未在GUI中映射的配置设置.我不得不进入位于<%SystemDrive%>/Windows/System32/inetsrv/config的应用程序主机配置文件,并更改以下设置.

默认设置在哪里

<windowsAuthentication enabled="true"> <providers> <add value="Negotiate" /> </providers> </windowsAuthentication>

改为这个并且有效.

<windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true"> <providers> <add value="NTLM" /> </providers> </windowsAuthentication>

  • 我以前遇到过类似的问题并通过导航到IIS> web app> authentication> windows authentication>右键单击> Providers>将NTLM更改为最顶层来解决.我怀疑Kerberos身份验证无法正常工作或类似的问题.本系列文章中有一些关于Kerberos的精彩文章http://technet.microsoft.com/en-us/library/ms191153.aspx如果您愿意,可以帮助进一步排除故障. (8认同)
  • 它必须是在机器层面。它已经在网络配置中以这种方式设置了。 (2认同)
  • 我已经尝试过 Rory,但在我将 useKernelMode 和 useAppPoolCredentials 设置为 true 之前它仍然不起作用。由于某种原因,它没有在网络配置中选择这些设置,我必须在机器级别执行此操作。抱歉,我花了这么长时间才回复此问题。 (2认同)

Ste*_*ski 6

为了通过IE传递集成凭据,该站点需要位于您的Intranet站点区域中.它不能位于受信任的站点或任何其他站点中.