繁体   English   中英

Chrome绕过MVC 4 Web应用程序的Windows身份验证

[英]Chrome bypass Windows Authentication for MVC 4 web application

我有一个使用Windows身份验证的MVC 4 Web应用程序。 我将该应用程序部署到带有IIS 7的真实Web服务器上。Windows身份验证功能可以很好地与Internet Explorer(IE),FireFox(FF)和Safari一起使用,但不适用于Chrome; 我正在使用Chrome版本27。

在这里,“ Works ”表示当用户打开浏览器(IE,FF或Safari)并浏览到Web应用程序站点时,首先会提示他/她在对话框中提供有效的凭据。 然后,如果他/她的凭据有效,则允许用户查看网站页面。 不适用于Chrome ”表示Chrome始终允许用户立即浏览网页,而不会看到凭据对话框,也不会像IE,FF或Safari一样提示用户在对话框中输入凭据! 尽管我尝试清除Cookie,Chrome浏览器的缓存,然后关闭并再次打开Chrome,但我不知道该如何解决。 我知道不应执行Chrome的“清除Cookie”操作,因为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网站应用程序节点并转到其“身份验证”节点以启用Windows身份验证,并禁用“匿名身份验证”。

看一下保护ASP.NET MVC 4 App和新的AllowAnonymous Attribute的安全

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

引用

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

如果将来这种情况发生变化,产品团队将与您进行沟通,但现在毫无例外,这是规则。

例子:

从默认的ASP.Net MVC项目(互联网/内联网)开始。

编辑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区域。 我们通过组策略来做到这一点。

请参阅如何为Google Chrome启用自动登录用户身份验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM