Asp.net Chrome绕过MVC4 web应用程序的Windows身份验证

Asp.net Chrome绕过MVC4 web应用程序的Windows身份验证,asp.net,asp.net-mvc-4,iis-7,Asp.net,Asp.net Mvc 4,Iis 7,我有一个使用Windows身份验证的MVC4 web应用程序。我使用IIS 7将该应用程序部署到真正的web服务器上。Windows身份验证功能在IE、FireFox和Safari上运行良好,但在Chrome上不起作用;我使用的是Chrome版本27 在这里,有效“是指当用户打开浏览器(IE、FF或Safari)并浏览web应用程序站点时,首先会在对话框中提示他/她提供有效凭据。然后,如果他/她的凭据有效,则允许用户查看网站页面。“不适用于Chrome”意味着Chrome始终允许用户立即浏览网页

我有一个使用Windows身份验证的MVC4 web应用程序。我使用IIS 7将该应用程序部署到真正的web服务器上。Windows身份验证功能在IE、FireFox和Safari上运行良好,但在Chrome上不起作用;我使用的是Chrome版本27

在这里,有效“是指当用户打开浏览器(IE、FF或Safari)并浏览web应用程序站点时,首先会在对话框中提示他/她提供有效凭据。然后,如果他/她的凭据有效,则允许用户查看网站页面。“不适用于Chrome”意味着Chrome始终允许用户立即浏览网页,而不会看到凭据对话框,也不会像IE、FF或Safari那样提示用户在对话框中输入凭据!这就是我不知道如何解决的问题,尽管我试图清除cookies,为我的Chrome浏览器缓存,然后关闭并再次打开Chrome。我知道Chrome的“cookie clear”操作不应该执行,因为IIS中的Windows身份验证模式与cookie没有任何关系,就像表单身份验证模式一样

在将web应用程序部署到服务器之后,我第一次使用Chrome测试web应用程序时,Chrome确实提示我在对话框中输入凭据,但从第二次开始,Chrome不再提示我

请告诉我应该如何阻止Chrome浏览器让用户绕过凭证提示对话框。先谢谢你

我遵循以下两个步骤使我的MVC web应用程序与IE、FF和Safari一起工作:

1. 在MVC 4 web应用程序(Intranet模板)的web配置(web.config)文件中,我将Windows身份验证功能指定为:

<authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>

2. 在真实的web服务器上,在IIS版本7中,我打开我的MVC web站点应用程序节点,并转到其身份验证节点以启用Windows身份验证,并禁用匿名身份验证。

请看一看

您不能使用路由或web.config文件保护MVC应用程序(任何版本)保护MVC应用程序的唯一受支持的方法是应用Authorize属性

MVC使用路由,不将URL映射到WebForms、PHP和传统web服务器等物理文件位置因此,使用web.config肯定会在您的网站上打开一个安全漏洞。

示例:

从默认的ASP.NETMVC项目(internet/intranet)开始

编辑web.config并添加:

<location path="Home">
  <system.web>
    <authoirzation>
      <deny users="*">
    </authoirzation>
  </system.web>
</location>

运行该项目,默认情况下,您将使用默认路由
/Home/Index
,并且您可以看到内容,只需绕过web.config,而不更改默认模板。为什么?因为ASP.Net管道正在将请求的URL与web.config中指定的位置进行比较。但是,授权事件已在正在进行的路由(默认路由或自定义路由)的管道中执行后,允许访问假定的受限区域


此外,任何MVC
Redirect()
也将绕过与授权管道事件后再次进行路由相同的安全措施。

您需要将站点添加到本地intranet区域。我们通过集团政策做到这一点


请参见

如果我使用Authorize属性并希望任何人通过身份验证(意味着他提供有效凭据或windows net work帐户来访问web服务器),我如何实现Authorize属性的代码?。我强烈建议不要使用模拟。Chrome的安全漏洞仍然存在,尽管我试图用[Authorize]属性修饰我的测试控制器的操作,就像在表单验证中一样;Chrome仍然忽略登录提示对话框,让用户看到网页!我如何用Chrome解决这个安全漏洞?要么页面被Chrome缓存,要么Chrome被配置(不确定如何)以自动登录到网站,要么你的网站实际交付的是html,这是不可能的(你可以通过查看Chrome工具中的“网络”选项卡进行测试)。如果Chrome导致了安全问题,不可能在所有用户的计算机上“禁用Google Chrome的自动登录用户身份验证”。我无法控制用户浏览器!