ASP.NET Core是否等同于OwinHttpConfigurationExtensions.SuppressDefaultHostAuthentication?

时间:2017-02-08 15:07:07

标签: asp.net asp.net-web-api asp.net-core-mvc asp.net-core-1.0 asp.net-core-webapi

我在调查可能由我的应用程序的API请求返回错误的响应代码的JavaScript请求而导致的错误时遇到了SuppressDefaultHostAuthentication但是它是针对ASP.NET Web API 2的

我是否在ASP.NET Core的融合(MVC + Web API)世界中寻找一个等价物?

  

SuppressDefaultHostAuthentication

     

当主机的默认身份验证被禁止时,当前主体在进入HttpServer的第一个消息处理程序时设置为匿名。因此,将忽略主机执行的任何默认身份验证。然后,HttpServer中的剩余管道(包括IAuthenticationFilters)将成为身份验证的专有权限。

     

https://msdn.microsoft.com/en-us/library/dn314641(v=vs.118).aspx

     

虽然MVC模板使用基于cookie的身份验证机制,   新的SPA模板更喜欢使用基于令牌的身份验证模型   通过Authorization HTTP标头显式传递(这是更好的   因为它避免了CSRF攻击)。这意味着默认   自身份验证以来,必须忽略来自主机的身份验证   将针对除cookie之外的其他内容执行。 Web API   2添加了一项功能,忽略调用的主机级别身份验证   SuppressDefaultHostAuthentication。这是一个扩展方法   添加消息处理程序的HttpConfiguration。这个目的   消息处理程序是简单地(并显式地)分配匿名   RequestContext的Principal属性的主体。这种方式如果   cookie中间件确实处理传入的cookie,到时候   呼叫到达Web API后,呼叫者将被视为匿名。

     

https://brockallen.com/2013/10/27/host-authentication-and-web-api-with-owin-and-active-vs-passive-authentication-middleware/

2 个答案:

答案 0 :(得分:0)

Brock Allen(IdentityServer的作者)建议:

HttpContext.User = null

我认为他说在处理程序中执行此操作会产生同样的效果,但还没有机会自己尝试。

来源:https://twitter.com/BrockLAllen/status/829351328321302529

答案 1 :(得分:0)

好的,这已经晚了几年,但可能会对某人有所帮助。我认为您要尝试的是在Web Api上将Cookie身份验证(用于UI)与Jwt承载令牌身份验证混合使用。在较旧的版本(4.x)中,可以在设置Web API时完成SuppressDefaultHostAuthentication。您现在可以通过向Web API控制器上的authorize属性提供身份验证方案来完成相同的事情

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

您可以在此处获得Barry Dorrans提供的示例中的所有内容 CookieJwtBearerExample