2014-07-23 298 views
5

我使用Visual Studio 2013和Owin Middleware提供的默认访问控制创建了一个新的ASP.NET MVC 5应用程序。OWIN身份验证与IIS基本身份验证

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

为什么呢?我怎样才能保护网站,无需更改代码的任何想法?

回答

5

默认文件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. 您的浏览器处理重定向,尝试打开新的URL,我们又回到了第1点。并且是循环。

你可以做的是注释掉上面代码中的LoginPath属性。这应该停止重定向循环,但也可以(但不必根据您的实现)中断应用程序用户的身份验证。

我最终得到的结果是实现一个小的Owin中间件,并自己进行基本认证。

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

+0

我这样做了。我创建了一个页面来授权用户并禁用基本认证。 – Fabio