因此,我使用intranet模板创建了一个新的ASP.NET MVC项目。web.config包含适当的值(例如<authentication mode="windows"/>
)。
如果我使用VS web服务器启动web应用程序,一切看起来都很好-页面显示了我的Windows域和用户名等等。然而,这在Opera和Safari以及IE和FF中都有效,它告诉我它根本没有使用Windows身份验证(因为据我所知,除了IE/FF之外,这不适用于任何浏览器)。
下一步是让它通过本地IIS工作。我创建了一个主机文件条目,将www.mysite.mydomain指向127.0.0.1。因此,在IIS中,我创建了一个绑定到www.mysite.mydomain网站,并启用Windows身份验证和禁用匿名身份验证。
我已经设置IE和FF来启用Windows身份验证,如下所示:
IE
中启用了Windows身份验证
FF
将'www.mysite.mydomain‘放入网络中。自动-ntlm-auth.trusted-uris配置设置。
但是当我在IE / FF中拨打www.mysite.mydomain时,我得到一个登录提示。有趣的是,即使我在这里输入我的Windows登录,它仍然失败,并再次显示登录提示。
我们这里没有active directory,但我的理解是,它应该可以与本地帐户一起工作。
我想不出我还需要做什么。有什么建议吗?
编辑:我们最近切换到使用Active Directory,问题仍然存在。
编辑:当我取消登录提示时,我被带到一个“IIS 7.5 Detailed Error”页面,其中包含以下信息:
HTTP错误401.2 -由于身份验证标头无效,您无权查看此页面。**
发布于 2012-10-23 02:31:21
您必须将主机文件中指定的域列入白名单,windows身份验证才能正常工作:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
DisableStrictNameChecking
并按DisableStrictNameChecking
注册表值并在值数据框中键入1,在注册表编辑器中单击OK
H114>,找到并单击以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
,指向新建,然后单击“多字符串值”。
BackConnectionHostNames
,然后按ENTER.
BackConnectionHostNames
,然后单击“修改”。
注意:此答案中的原始Microsoft知识库链接已断开并已被删除。This article提供了设置DisableStrictNameChecking的说明。
发布于 2012-10-27 04:17:25
最近,我花了三天的时间试图解决同样的问题,这让我抓狂。它发生在负载平衡设置上,其中一台服务器身份验证正确,而另一台服务器失败。调查问题-并最终解决它-发现它与负载平衡环境无关,当使用Windows身份验证进行身份验证时,任何服务器都可能发生这种情况,并且使用Active Directory可识别的名称以外的名称调用服务器
Kerberos 1.启用日志记录
要正确诊断问题,您需要在承载IIS站点的计算机上启用Kerberos日志记录。为此,请添加以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Add Registry Value LogLevel with ValueType REG_DWORD and value 0x1 (使用ValueTypeREG_DWORD和value0x1添加注册表值。
一旦打开日志记录,然后尝试进行身份验证,就会在Windows应用程序日志中记录错误。您可以忽略错误KDC_ERR_PREAUTH_REQUIRED (这只是握手的一部分),但是如果您得到错误KDC_ERR_C_PRINCIPAL_UNKNOWN,这意味着您的AD控制器无法识别您的服务器,因此您需要遵循以下步骤。
2. KDC_ERR_C_PRINCIPAL_UNKNOWN
如果你得到的是kerberos,这意味着名称“kerberos”与AD识别你的机器的方式不同,所以它无法提供有效的KDC_ERR_C_PRINCIPAL_UNKNOWN票证。在这种情况下,您需要在AD上为“'www.mysite.mydomain”注册一个服务主体名称(SPN)。
在您的AD控制器上,运行此命令-您将需要域管理员权限:
Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME
3.为应用程序池使用自定义标识
最后,使您的应用程序池使用属于Active Directory的自定义帐户,而不是使用NetworkService。这可以在应用程序池的高级设置中完成。
然后..。瞧。
注意:问题可能(不太可能)与将多个SPN注册到同一台计算机有关,在这种情况下,您将需要运行命令来删除重复的SPN,但我怀疑情况是否如此。还可以尝试向站点添加不同的绑定(不使用自定义名称),比如htttp://localhost: custom _port_number,看看身份验证是否有效。如果它起作用了,这是一个额外的迹象,表明您正在遭受与我相同的问题。
发布于 2011-09-13 03:06:39
你有没有试过把域名放在用户名前面?
DOMAIN\username
如果您没有域帐户,请尝试在您的用户名前加上计算机名:
MYCOMPUTER\myusername
https://stackoverflow.com/questions/7387156
复制相似问题