我在调查可能由我的应用程序的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后,呼叫者将被视为匿名。
答案 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