asp.net mvc 3 - mvc 3 Windows身份验证挑战IIS7.5网站(默认不是应用程序)Windows



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

在IIS7.5中创建和配置这个新站点所遵循的步骤:
  1. RDC到我的VM,我在IIS 7.5上创建新的Web站点。打开IIS管理器
  2. 没有更改默认网站,该网站没有绑定主机名,所有未分配的IP地址,端口80。
  3. 右键单击"Sites","Add Web Site…",提供站点名称"sit",应用程序池:DefaultAppPool,物理路径指向应用程序,它在Dev Server (VS2010)上工作。
  4. 点击"测试设置…"显示身份验证网格图标,授权黄色感叹号:"无法验证访问路径"。
  5. 检查我的物理路径目录的Windows安全访问(Windows资源管理器),不能找到DefaultAppPool帐户添加到NT安全访问权限。现在就让它这样吧。
  6. 在"添加网站"表单的"绑定"部分,如上所述,我留下类型:HTTP, IP地址:所有未分配,端口:80。在Host Name中:我提供了"sit",与上面的站点名称相同。
  7. 单击OK。站点创建完成,显示在右侧窗格的"站点"窗口中。点击最右边垂直"Actions"面板上的"Browse sit on *:80(http)"超链接。浏览器IE8启动,我得到一个关于DNS查找无法找到"sit"的错误,这是我在步骤5中提到的主机名。
  8. 我去我的"hosts"文件在我的System32driversetc目录下,添加条目:{MachineIP} sit, save.
  9. 重新加载浏览器,现在它要求我输入windows凭据。在框上提供我的管理凭据3次,浏览器给我以下消息:

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

登录方法尚未确定

登录用户尚未确定

10。在IIS7.5中检查身份验证。这是从我的web配置正确解密:windows身份验证启用,响应类型HTTP 401挑战。禁用匿名认证。这是我的网。配置安全设置:

    <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认证模块在IIS中安装和引用。

这是我无法继续下去,我需要你的帮助。我错过了一些东西,但我不知道是什么。当我回到网站,打开"基本设置"时,我看到"测试连接"弹出的"授权"中出现了令人生畏的黄色感叹号,但我似乎不知道如何解决它:我以Admin身份登录到我的VM,我给了我的应用程序的物理位置完全访问权,我尝试在网站上使用我的Admin帐户以及应用程序池,我在物理应用程序目录上添加了每个人帐户,具有读取执行权限,添加了IUSR, IIS_IUSRS, networkrok SERVICE等权限,但仍然无济于事。我不太明白:

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

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

这是我的请求,被小提琴手抓住了:

- [NTLM Type3:身份验证 ]------------------------------提供者:NTLMSSP类型:3OS版本:6.1:7601国旗:0 xa2888205安全缓冲区中支持Unicode。Type2应答中包含的请求服务器的身份验证领域。NTLM身份验证。谈判总是签字。协商NTLM2密钥。Target信息块,用于计算NTLMv2响应。支持56位加密。支持128位加密。lmresp_Offset: 160;lmresp_Length: 24;lmresp_Length2: 24ntresp_Offset: 184;ntresp_Length: 24;ntresp_Length2: 24Domain_Offset: 88;Domain_Length: 12个;Domain_Length2: 12User_Offset: 100;User_Length: 36;User_Length2: 36Host_Offset: 136;Host_Length: 24;Host_Length2: 24msg_len: 208域:BLAHBLAH用户:谢尔盖·伊万琴科夫主持人:LLLBBBAAA001lm_resp: FA 6D 30 62 55 98 F6 70 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000nt_resp: F6 9F 3F D5 36 E5 7F 50 BF 4A 22 A4 E4 BA 5E F4 AB 29 31 04 8F FD D5 F3

谁有什么好的建议来解决这个问题?衷心感谢您的帮助。

我知道这有点晚了,但我有同样的问题,这是什么帮助我:https://serverfault.com/questions/485006/why-cant-i-log-in-to-a-windows-protected-iis-7-5-directory-on-the-server

phoebus写在那里:

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

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

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

以下是微软的官方说明。请注意,虽然下面的说明表示重新启动,但我发现IE通常会立即接受更改。

方法1:指定主机名(NTLM认证首选方法)

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

方法二:关闭环回检查(不推荐的方法)

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

附录:

将DisableStrictNameChecking注册表项设置为1:

  1. 单击开始,单击运行,键入regedit,然后单击确定。
  2. 在注册表编辑器中,找到并单击以下注册表键:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters
  3. 右键单击参数,指向新建,然后单击DWORD值。
  4. 输入DisableStrictNameChecking,然后按ENTER。
  5. 右键单击DisableStrictNameChecking,然后单击Modify。
  6. 在数值数据框中输入1,然后单击确定。
  7. 退出注册表编辑器,然后重新启动计算机。

最新更新