【问题标题】:Is there an ASP.NET Core equivalent to OwinHttpConfigurationExtensions.SuppressDefaultHostAuthentication?是否有等效于 OwinHttpConfigurationExtensions.SuppressDefaultHostAuthentication 的 ASP.NET Core?
【发布时间】:2017-06-26 06:47:45
【问题描述】:

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

我正在寻找 ASP.NET Core 的融合(MVC + Web API)世界中的等价物(如果存在)?

抑制默认主机身份验证

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

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

虽然 MVC 模板使用基于 cookie 的身份验证机制,但 新的 SPA 模板更喜欢使用基于令牌的身份验证模型 通过 Authorization HTTP 标头显式传递(这更好 因为它避免了 CSRF 攻击)。这意味着默认 必须忽略来自主机的身份验证,因为身份验证 将针对除 cookie 之外的其他内容执行。网络 API 2 添加了一个忽略主机级别身份验证的功能,称为 抑制默认主机身份验证。这是一种扩展方法 添加消息处理程序的 HttpConfiguration。这样做的目的 消息处理程序是简单地(并明确地)分配一个匿名的 principal 到 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/

【问题讨论】:

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


    【解决方案1】:

    Brock Allen(IdentityServer 的作者)建议:

    HttpContext.User = null

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

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

    【讨论】:

      【解决方案2】:

      好的,这已经晚了几年,但它可能会对某人有所帮助。我认为您要做的是将 cookie 身份验证(用于 UI)与 Web Api 上的 Jwt 不记名令牌身份验证混合。在旧时代 (4.x) 中,您可以在设置 Web API 以完成此操作时抑制默认主机身份验证。您现在可以通过为 Web API 控制器上的授权属性提供身份验证方案来完成同样的事情,就像这样

      [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
      

      您可以在此处阅读 Barry Dorrans 提供的示例中的所有相关信息 CookieJwtBearerExample

      【讨论】:

      • 好的,这是几年后的事了……但你帮助了我……感谢您发布此答案。
      猜你喜欢
      • 2018-05-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多