28

我在获取 Windows 身份验证以在 IIS 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 身份验证

4

7 回答 7

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>
于 2014-04-17T15:29:59.437 回答
18

我找到了答案。这是一个未在 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>

于 2012-09-24T13:01:04.603 回答
6

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

于 2012-09-20T16:50:51.883 回答
2

我遇到了类似的问题,通过将用户组 (MYDOMAIN\Users) 添加到具有读取权限的应用程序的物理文件夹来解决此问题。

于 2012-09-23T05:41:54.723 回答
2

我有一个类似的问题,只能通过 Rory 解释的将 NTLM 移动到提供程序中的 kerberos 之上或通过修改 DNS 来解决。仅当网站的主机标头作为 DNS 中的 CNAME(别名)存在时,该问题才会出现在 IIS7 中。在 IIS6 中,集成 Windows 身份验证默认仅使用 NTLM。在 IIS7 中,默认情况下 IWS 在 NTLM 之前使用 kerberos。将 CNAME 记录替换为 A 记录即可解决问题。Kerberos 对 DNS 中的 A 记录没有问题,但它有别名问题。

因此,显然 DNS CNAME 与 Windows 2008 上的 kerberos 不兼容。

克里斯

于 2013-11-14T11:38:34.007 回答
0

如果浏览器提示您输入凭据,我认为您的应用程序池凭据无权访问您页面上的某些资源。您是否尝试过创建一个空白的 html 页面并访问该页面?

<html>
<body>
hello world!
</body>
</html>
于 2012-09-23T05:55:24.787 回答
0

我有一个类似的问题。

我在默认网站下有一个应用程序,它已经启用了 Windows 身份验证但没有工作。我解决了在默认网站上禁用匿名身份验证以及在默认网站上启用 Windows 身份验证的问题。

于 2016-03-29T19:52:19.157 回答