我有一个使用Windows身份验证的MVC4应用程序。我的计算机(开发)和主机服务器都运行IIS 7.5,并且位于同一个域中。该应用程序拥有自己的应用程序池,该池使用NetworkService标识。该应用程序仅启用了Windows身份验证。
在开发过程中我没有任何安全性,我只是显示了用户的名字。这在我的本地IIS和服务器的IIS上,从具有多个用户的多台计算机上运行良好。
一旦我添加了AuthorizeAttribute,我就会开始在Chrome和IE中提示输入凭据。使用Fiddler我可以看到正在发送NTLM身份验证标头,但显然被忽略了。如果我继续输入我的凭据,我就可以访问。
当尝试远程和本地(远程桌面)查看站点时,本地和服务器都会发生这种情况。立即再次删除AuthorizeAttribute意味着我没有得到提示。
我做了很多搜索并尝试了几次远射但没有成功。我还应该尝试什么?
感谢。
答案 0 :(得分:2)
问题可能在于您的浏览器配置。浏览器默认情况下不允许所有站点使用NTLM。 IE仅允许Intranet区域中的站点使用NTLM进行身份验证,而it seems Chrome目前已复制该行为。
因此,要使您的网站正常工作,请转到Internet Explorer中的“Internet选项”,并将您的域添加到Intranet网站。
答案 1 :(得分:1)
我的一位同事最近才设法解决了这个问题。它似乎是由我们有一个本地DNS后缀的事实引起的。后缀类似于abc.local
,因此此处的所有计算机都可以像http://hostname.abc.local
一样访问。
这是一个问题,因为Internet Explorer(Chrome正在进行其设置)并不认为该网站是Local Intranet
区域的一部分,因此不够信任它。
在此图中的不完整之后修复了问题:
请注意,是否应勾选Require server verification (https:) for all sites in this zone
可能会有所不同。