ClaimsAuthenticationManager与IAuthenticationFilter对比OWIN Forms身份验证

sha*_*non 14 asp.net authentication asp.net-mvc owin asp.net-mvc-5

.NET 4.5,MVC 5:ClaimsAuthenticationManager,IAuthenticationFilter,OWIN Forms Authentication和ClaimsPrincipals都是新的,因为我上次触及了我的网站的身份验证功能.我发现所有说这个或那个是正确方法的文档都缺乏清晰度.我甚至无法分辨哪些功能是互斥的.

该文档说旧的ASP.NET FormsAuthenticationModule不支持声明,但新的OWIN不支持cookieless.然而,我觉得OWIN打算成为前进的功能?

  1. 产品路线图是否说明哪种方法是网络应用的前进方向?
  2. ClaimsAuthenticationManager是否与Web应用程序的OWIN Forms身份验证同义?
  3. ClaimsAuthenticationManager和全局IAuthenticationFilter是互斥的吗?

推进正确的方向将是值得赞赏的,我的大脑就是这样.

sha*_*non 6

身份验证过滤器

以前在 MVC 中,IAuthorizationFilter是执行自定义身份验证的常见位置。这个过滤器的原因可以在应用程序有两个授权规范和只有一个身份验证规范的场景中看到。两个选项 - 将身份验证规范添加到单个任意授权例程,并将所有这三个规范创建为不同的IAuthorizationFilter- 这两个选项都意味着我们不确保首先进行身份验证。

IAuthenticationFilter最初添加到 MVC 程序集以解决此问题,然后重新定位以供 WebAPI 使用。可以在这里找到一篇很好的相关文章;ASP.NET Web API 安全过滤器。

严格来说,IAuthenticationFilterOWIN Authentication 和 OWIN Authentication 并不相互排斥,但 OWIN Authentication 会先发生,并且会妨碍任何意图同时使用两者。

OWIN 表单身份验证

OWIN 表单身份验证是一个令人困惑的短语,我是从阅读一篇措辞不当的文章(上面链接)中得到的。它代表两个非依赖的解决方案组件:

该解决方案的“表单”方面的运行方式仍与之前的表单身份验证相同。这是授权失败(例如从[Authorize]属性或web.config <authorization>元素发生的)与重定向到登录处理程序表单的结果。(您选择的技术将决定您在何处配置该重定向 URL。对于 OWIN,您将在 中配置它CookieAuthenticationOptions。)

“OWIN”方面与促使我的 OP 的混乱更相关。我不会广泛地详细介绍 OWIN,因为它的目的不仅仅是身份验证;将 ASP.NET 与 IIS 完全分离(通过 OWIN),这会产生很多优点和缺点,但 MVC6 是专门构建在 OWIN 上的,因此它会继续存在。

特定于身份验证,当前模块(如 ASP.NET 外部身份验证提供程序(Facebook/Google 社交登录))依赖于 OWIN。如果您以“正常”方式编写 ASP.NET Web 身份验证,则您将使用 OWIN。这是通过 OWIN 进行身份验证的好处。

以前,社交登录以一种更拼凑的方式发生,如重定向和MessageHandler调用OAuthWebSecurity. OWIN 提供了一种机制来重定向和处理身份验证提供程序回调;阅读为 MVC 5 创建自定义 OAuth 中间件了解更多信息。

声明认证管理器

ClaimsAuthenticationManager听起来不像。它实际上是 Windows Identity Foundation (WIF) 已经执行的身份验证过程的一个末端方面。它旨在转换由该过程产生的 Claim 以满足您的自定义需求。例如,声明列表可能包含一个用户名,您可以从该用户名中查找经常访问的角色或权限,并出于性能原因将这些添加到声明列表中。

它适用于任何使用 WIF 的地方。相对于当前的 ASP.NET Web 应用程序,这意味着 OWIN。

概括

是的。您可能会在现代 ASP.NET Web 应用程序中使用 OWIN、WIF 和 cookie。如果您使用“盒装材料”,以及此版本中 WebForms 和 VB.NET 的消亡,那么您只能接受一些东西。

因此,由于您可能会进行 OWIN 身份验证,因此这里有一个关于该主题的精彩系列;这是什么 Owin 东西?