因此,我使用 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 中,我创建了绑定(bind)到 www.mysite.mydomain 的网站,并启用 Windows 身份验证并禁用匿名身份验证。
我已设置 IE 和 FF 以启用 Windows 身份验证,如下所示:
IE
- 将 URL 添加到 Intranet 群组
- 确保在高级设置中启用 Windows 身份验证
FF
将“www.mysite.mydomain”放入network.automatic-ntlm-auth.trusted-uris配置设置中。
但是当我在 IE/FF 中拨号 www.mysite.mydomain 时,我收到登录提示。有趣的是,即使我在此处输入 Windows 登录信息,它仍然失败并再次显示登录提示。
我们这里没有事件目录,但我的理解是它应该可以与本地帐户一起正常工作。
我想不出还有什么我需要做的。有什么建议吗?
编辑:我们最近改用 Active Directory,但问题仍然存在。
编辑:当我取消登录提示时,我会进入“IIS 7.5 详细错误”页面,其中包含以下信息:
HTTP Error 401.2 - Unauthorized You are not authorized to view this page due to invalid authentication headers.**
最佳答案
您必须将主机文件中指定的域列入白名单才能使 Windows 身份验证正常工作:
- 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
- 在注册表编辑器中,找到以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- 右键单击“参数”,单击“新建”,然后单击“DWORD(32 位)值”。
- 输入
DisableStrictNameChecking
并按 Enter。 - 双击
DisableStrictNameChecking
注册表值,然后在“值数据”框中键入 1,然后单击“确定” - 在注册表编辑器中,找到并单击以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
- 右键单击 MSV1_0,指向“新建”,然后单击“多字符串值”。
- 键入
BackConnectionHostNames
,然后按 Enter。 - 右键单击
BackConnectionHostNames
,然后单击“修改”。 - 在“值数据”框中,键入主机名或本地计算机上站点的主机名,然后单击“确定”。
- 退出注册表编辑器,然后重新启动 IISAdmin 服务。
注意: 此答案的原始 Microsoft 知识库链接已损坏并已被删除。 This article提供了设置DisableStrictNameChecking 的说明。
关于asp.net-mvc - 无法通过本地 IIS 进行 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387156/