使用IIS基本身份验证的OWIN身份验证

时间:2014-07-23 20:04:12

标签: asp.net-mvc iis owin

我使用Visual Studio 2013和Owin Middleware提供的默认访问控制创建了一个新的ASP.NET MVC 5应用程序。

我在IIS上启用了基本身份验证(禁用所有其他身份验证),以保护网站免受那些没有我在Windows上创建的用户/密码的人的攻击。它导致浏览器中的“#34;重定向循环”。

任何想法为什么?如何在不更改代码的情况下保护网站?

1 个答案:

答案 0 :(得分:6)

默认情况下,文件Startup.Auth.cs中会出现如下内容:

 app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Main/Account/Login"),
                CookieName = "OwinAuthCookie",
            });

在IIS中启用基本身份验证时,会发生以下情况:

  1. IIS基本身份验证模块发现没有身份验证标头,因此它返回HTTP 401 Response
  2. 响应不会立即返回,但由Owin处理。
  3. Owin看到请求获得401 (Unauthorized) Response,因此会重定向到已配置的LoginPath
  4. 您的浏览器处理重定向,尝试打开新网址,然后我们又回到第1点。这就是循环。
  5. 您可以做的是在上面的代码中注释掉LoginPath属性。这应该会停止重定向循环,但也可以(但不必根据您的实现)对应用程序用户进行中断身份验证。

    我最终得到的是实现一个小的Owin中间件并自己进行基本身份验证。

    这些链接可能会有所帮助: