1

需要您的建设性建议和任何帮助。我正在 Windows Server 2008 R2 上的 IIS7.5 中为我的公司 Intranet(不是现有默认网站下的应用程序!)创建一个新网站,并且似乎无法通过 Windows 身份验证的身份验证问题获得。我已经浏览了 StackOverflow 以及其他网站上的所有文章和帖子,但目前还没有找到可行的解决方案。

我在 IIS7.5 中创建和配置这个新站点的步骤:

  1. RDC 到我的 VM,我在 IIS 7.5 上创建新网站。打开 IIS 管理器。
  2. 没有更改默认网站,它没有绑定到主机名,所有未分配的 IP 地址,端口 80。它仍然存在。
  3. 右键单击“站点”,“添加网站...”,提供站点名称“sit”,应用程序池:DefaultAppPool,物理路径指向应用程序,适用于开发服务器(VS2010)。
  4. 单击“测试设置...”显示身份验证网格图标,授权黄色感叹号:“无法验证对路径的访问”。
  5. 检查我的物理路径目录以获取 Windows 安全访问权限(Windows 资源管理器),但找不到 DefaultAppPool 帐户以添加到 NT 安全访问权限。暂时就这样吧。
  6. 在“添加网站”表单的“绑定”部分,如上所述使用,我留下类型:HTTP,IP 地址:全部未分配,端口:80。在主机名中:我提供“sit”,与站点名称相同以上。
  7. 单击确定。站点已创建,显示在“站点”窗口的右窗格中。单击最右侧垂直“操作”面板上的“浏览坐在 *:80(http)”超链接。浏览器 IE8 启动,我收到关于 DNS 查找无法找到“sit”的错误,这是我在步骤 5 中提到的主机名。
  8. 我转到 System32\drivers\etc 目录中的“主机”文件,添加条目:{MachineIP} 坐下,保存。
  9. 重新加载浏览器,现在它要求我提供 Windows 凭据。在盒子上提供我的管理员凭据 3 次,浏览器会给我以下消息:

“HTTP 错误 401.1 - 未经授权您无权使用您提供的凭据查看此目录或页面。

登录方式尚未确定

登录用户尚未确定

10.在 IIS7.5 中检查我的身份验证。它是从我的 Web 配置中正确解密的:Windwos Authentication Enabled,响应类型 HTTP 401 Challenge。匿名身份验证已禁用。这是我的 web.config 安全设置:

    <system.webServer>
    <security>
    <authentication>
  <anonymousAuthentication enabled="false" userName="" />
  <windowsAuthentication enabled="true" useKernelMode="false" useAppPoolCredentials="true"> 
                <providers>
                    <clear />
                    <add value="NTLM" />
                    <add value="Negotiate" />
                </providers>
                <extendedProtection tokenChecking="Allow" />
            </windowsAuthentication>
        </authentication>
    </security>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    <system.web>
    <authentication mode="Windows" />
    <identity impersonate="false" />

我的 Windows Athentication 模块都在 IIS 中安装和引用。

这是我无法继续进行的地方,我需要你的帮助。我错过了一些东西,但我无法弄清楚它是什么。当我返回该站点并打开“基本设置”时,我在“测试连接”弹出窗口的“授权”中看到了令人生畏的黄色感叹号,但我似乎无法弄清楚如何解决它:我已登录以管理员身份进入我的虚拟机,我为我的应用程序的物理位置提供了完全访问权限,我尝试在站点以及应用程序池上使用我的管理员帐户,我已经在物理应用程序目录中添加了所有人帐户,并具有读取执行权限权限,添加了IUSR,IIS_IUSRS,NETWROK SERVICE等权限,仍然无济于事。我不是特别明白:

  1. 为什么浏览器会提示我输入凭据,即使我的浏览器设置显示“使用当前用户名和密码自动登录”,并且我的站点主机名已添加到“本地 Intranet”列表中?

  2. 为什么我提供有效凭据(3 次)后,仍然得到“登录方法:尚未确定”和“登录用户:尚未确定”?

这是我的请求,被 Fiddler 抓住了:

-[NTLM Type3:身份验证]------------------------------ 提供者:NTLMSSP 类型:3 操作系统版本:6.1:7601 标志: 0xa2888205 安全缓冲区支持 Unicode。请求服务器的身份验证领域包含在 Type2 回复中。NTLM 身份验证。协商总是签字。协商 NTLM2 密钥。提供用于计算 NTLMv2 响应的目标信息块。支持 56 位加密。支持 128 位加密。lmresp_Offset:160;lmresp_Length:24;lmresp_Length2:24 ntresp_Offset:184;ntresp_Length:24;ntresp_Length2:24 Domain_Offset:88;域_长度:12;Domain_Length2:12 User_Offset:100;用户长度:36;User_Length2:36 Host_Offset:136;主机长度:24;Host_Length2:24 msg_len:208 域:BLAHBLAH 用户:sergey ivanchenkov 主机:LLLBBBAAA001 lm_resp:

有没有人有任何好的建议来解决这个问题?衷心感谢帮助。

4

1 回答 1

0

我知道这有点晚了,但我遇到了同样的问题,这对我有帮助: https ://serverfault.com/questions/485006/why-cant-i-log-in-to-a-windows-protected-iis -7-5-服务器上的目录

phoebus 在那里写道:

您几乎肯定会遇到 IIS 5.1 引入的 Windows 环回检查。这是一项安全功能,可避免针对系统的某些类型的反射攻击。

Microsoft 有一篇 KB 文章描述了解决方法。他们基本上归结为修改注册表以禁用环回检查,或允许某些主机名(例如您的本地主机名或站点名)进行反向连接。

您可以通过 PowerShell 快速禁用检查:

以下是微软的官方说明。请注意,尽管下面的说明指示重新启动,但我发现 IE 通常会立即获取更改。

方法 1:指定主机名(如果需要 NTLM 身份验证,首选方法)

  1. 将 DisableStrictNameChecking 注册表项设置为 1。
    1. 单击开始,单击运行,键入 regedit,然后单击确定。
    2. 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
    3. 右键单击 MSV1_0,指向新建,然后单击多字符串值。
    4. 键入 BackConnectionHostNames,然后按 Enter。
    5. 右键单击 BackConnectionHostNames,然后单击修改。
    6. 在数值数据框中,键入本地计算机上站点的主机名或主机名,然后单击确定。
    7. 退出注册表编辑器,然后重新启动 IISAdmin 服务。

方法2:禁用环回检查(不太推荐的方法)

  1. 将 DisableStrictNameChecking 注册表项设置为 1。
    1. 单击开始,单击运行,键入 regedit,然后单击确定。
    2. 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
    3. 右键单击 Lsa,指向新建,然后单击 DWORD 值。
    4. 键入 DisableLoopbackCheck,然后按 Enter。
    5. 右键单击 DisableLoopbackCheck,然后单击修改。
    6. 在数值数据框中,键入 1,然后单击确定。
    7. 退出注册表编辑器,然后重新启动计算机。

附录:

要将 DisableStrictNameChecking 注册表项设置为 1:

  1. 单击开始,单击运行,键入 regedit,然后单击确定。
    1. 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
    2. 右键单击参数,指向新建,然后单击 DWORD 值。
    3. 键入 DisableStrictNameChecking,然后按 Enter。
    4. 右键单击 DisableStrictNameChecking,然后单击修改。
    5. 在数值数据框中,键入 1,然后单击确定。
    6. 退出注册表编辑器,然后重新启动计算机。
于 2013-07-09T15:11:36.983 回答