1

我有一个使用 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 那样提示他们在对话框中输入凭据!这是我不知道如何解决的问题,虽然我试图清除我的 Chrome 浏览器的 cookie、缓存并关闭并再次打开 Chrome。我知道 Chrome 的“cookie clear”操作不应该执行,因为 IIS 中的 Windows 身份验证模式与表单身份验证模式之类的 cookie 无关.

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

请让我知道我应该怎么做才能阻止 Chrome 浏览器让用户绕过凭据提示对话框。先感谢您。

我按照以下 2 个步骤使我的 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 身份验证,并禁用匿名身份验证。

4

2 回答 2

2

查看保护您的 ASP.NET MVC 4 应用程序和新的 AllowAnonymous Attribute

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

引用

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

如果以后有变化,产品团队会有沟通,但目前无一例外。

例子:

从默认的 ASP.Net MVC 项目(internet/intranet)开始。

编辑 web.config 添加:

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

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

此外,任何 MVCRedirect()还将绕过与在授权管道事件之后再次发生路由相同的安全措施。

于 2013-06-21T22:18:39.133 回答
0

您需要将该站点添加到本地 Intranet 区域。我们通过组策略来做到这一点。

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

于 2013-06-21T22:22:56.040 回答