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

Posted

技术标签:

【中文标题】Owin 和 Windows 身份验证 (mvc5) - 使用 Windows 身份验证作为登录的一部分【英文标题】:Owin and Windows Auth (mvc5) - using Windows auth as a part of login 【发布时间】:2013-12-26 20:54:03 【问题描述】:

我正在尝试创建一个部分使用 Windows Auth 的 MVC5 webapp。

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

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

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

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

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

请注意,我使用的是非常简化的 Owin 设置。 UseCookieAuthenticationApplicationCookie 类型和 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 身份验证中间件版本吗?我可以获取源代码以便调试/导出吗?

【问题讨论】:

你有没有找到这个问题的答案? 这是 - github.com/MohammadYounes/MVC5-MixedAuth/tree/Update3 - 帮助吗? 【参考方案1】:

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

【讨论】:

这根本没有帮助

以上是关于Owin 和 Windows 身份验证 (mvc5) - 使用 Windows 身份验证作为登录的一部分的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC5 中使用 OWIN Oauth 的 Google 身份验证未命中 ExternalLoginCallback 函数

身份验证/授权 MVC 5 和 Web API - Katana/Owin

ASP.NET MVC5 OWIN Facebook 身份验证突然不起作用

MVC 5 Owin CAS 注销操作未注销

Cookie 持久性在 OWIN 身份验证中不起作用

具有 OWIN 自主机和 Windows 身份验证的 Web Api