IAuthenticationFilter
在MVC中,IAuthorizationFilter
通常用于执行自定义身份验证。使用该过滤器的原因在于应用程序具有两个授权规范和一个身份验证规范的情况下。两种选择 - 将身份验证规范添加到单个任意授权例程中,或将这三个规范全部创建为不同的IAuthorizationFilter
- 都意味着我们不能确保首先进行身份验证。
IAuthenticationFilter
最初添加到MVC程序集中以解决此问题,然后被重定位以供WebAPI使用。可以在这里找到一篇相关文章; ASP.NET Web API Security Filters。
严格来说,IAuthenticationFilter
和OWIN身份验证并不是互斥的,但OWIN身份验证将首先发生,并可能妨碍同时使用两者的任何意图。
OWIN Forms身份验证
OWIN表单身份验证是一个令人困惑的短语,我从阅读一篇措辞不当的文章(上面链接的文章)中得到了这个短语。它代表两个非依赖解决方案组件:
“解决方案”的“表单”方面仍然与以前的表单身份验证相同。它是授权失败的结果(例如由
[Authorize]
属性或
web.config
<authorization>
元素引起的),并配对重定向到登录处理程序表单。(您选择的技术将确定在哪里配置该重定向URL。对于OWIN,您将在
CookieAuthenticationOptions
中进行配置。)
“OWIN”方面更与我的OP引起的混淆相关。我不会广泛地介绍OWIN,因为它的目的不仅仅是身份验证;通过OWIN完全分离ASP.NET和IIS(通过OWIN),它会产生许多优缺点,但MVC6仅建立在OWIN上,因此它是永久的。
特别针对身份验证,像ASP.NET外部身份验证提供程序(Facebook/Google社交登录)这样的当前模块依赖于OWIN。如果您按照
“正常”的方式编写ASP.NET web身份验证,则将使用OWIN。这对通过OWIN进行身份验证是有益的。
以前,社交登录是通过重定向和称为OAuthWebSecurity
的MessageHandler
来实现的。 OWIN提供了一种机制,既可以重定向,又可以处理身份验证提供程序回调;有关更多信息,请阅读Creating Custom OAuth Middleware for MVC 5。
ClaimsAuthenticationManager
ClaimsAuthenticationManager
并不像它听起来的那样。它实际上是Windows Identity Foundation(WIF)已经执行的身份验证过程的尾部方面。它旨在转换该过程产生的声明以满足您的自定义需求。例如,Claims列表可能包括用户名,您可以从数据库中查找频繁访问的角色或权限,并将这些添加到Claims列表以提高性能。
它适用于使用WIF的任何地方。相对于当前的ASP.NET Web应用程序,这将意味着OWIN。
摘要
没错。在现代ASP.NET Web应用程序中,您可能会使用OWIN、WIF和cookies。如果您使用“盒装材料”,则需要接受这一点,以及WebForms和VB.NET在此版本中的死亡。
因此,既然您可能会进行OWIN身份验证,这里有一系列关于该主题的优秀文章; 这个OWIN是什么?