Owin和Windows Auth(mvc5) - 使用Windows身份验证作为登录的一部分

时间:2013-12-09 16:42:59

标签: authentication windows-authentication asp.net-mvc-5 owin

我正在尝试使用部分使用Windows身份验证的MVC5网络应用程序。

我的意思是,它实际上是基于表单/ cookie的身份验证,但请求用户的Windows主体形成了他们的登录凭据的部分

例如,登录页面会显示“您已被识别为 somedomain \ kierenj 。请输入要登录的密码。”如果他们输入了正确的代码,则会设置cookie并登录。

如果Windows身份验证失败,则仍会显示登录页面,但会被禁用。

我尝试过像这样的WindowsPrincipalHanlder:https://github.com/JabbR/JabbR/blob/master/JabbR/Middleware/WindowsPrincipalHandler.cs

它的要点是,如果我启用Windows身份验证并禁用匿名身份验证,那么Owin(或者可能是其身份的cookie身份验证部分)会重定向到登录页面 - 它会重定向到登录页面 - 这是一个重定向循环。 / p>

注意我使用的是非常简化的Owin设置。 UseCookieAuthentication类型为ApplicationCookie且指定了LoginPath;然后我从我的帐户管理员那里拨打SignIn这样的话:

        var claims = new[] {
            new Claim(ClaimTypes.Name, "Username"),
            new Claim(ClaimTypes.Role, "AuthenticatedUser")
        };
        AuthenticationManager.SignIn(new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie));

(首先检查了WindowsIdentity.GetCurrent()

我真的需要编写自己的Owin cookie auth中间件版本吗?我可以获得源代码以便我可以调试/派生吗?

1 个答案:

答案 0 :(得分:-2)

为了避免重定向循环,在为Login页面提供服务的控制器的构造函数中,尝试将当前HttpContext的Response.SuppressFormsAuthenticationRedirect设置为true