我正在尝试使用部分使用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中间件版本吗?我可以获得源代码以便我可以调试/派生吗?
答案 0 :(得分:-2)
为了避免重定向循环,在为Login页面提供服务的控制器的构造函数中,尝试将当前HttpContext的Response.SuppressFormsAuthenticationRedirect设置为true