【问题标题】:Authentication Middleware - Indicate Failure身份验证中间件 - 指示失败
【发布时间】:2017-07-14 18:08:32
【问题描述】:

我正在尝试为我的 web api(使用 asp.net 核心)编写一些身份验证中间件,但我不确定如何指示身份验证失败。

这个想法是我希望允许多种身份验证方法,例如;基本(使用授权标头),在请求正文中传递凭据,可能获取不记名令牌等。

我不确定的是如何从中间件中指示成功或失败。我编写它的唯一中间件是“做一件事”(例如日志记录)并让请求继续它的快乐方式。

如果身份验证失败,我该如何表示? 我想返回一个 HTTP 状态代码,但我不确定请求管道的其余部分会发生什么,它是否会原地中止并在该点之前返回之前的中间件?

由于这是身份验证,我想它需要成为管道中的第一个中间件。

如果我打算支持多种身份验证方法,最好将它们全部放在同一个中间件中,或者是否有可能(或更好)使其每个中间件有 1 个身份验证机制。 如果可能的话,我该如何编写以区分“提供的凭据不好,在此处失败”和“此中间件没有找到它支持的任何合适的凭据,但也许下一个会” .

我喜欢 1 块中间件做 1 件事的想法,但我不喜欢中间件需要知道它是链中的最后一个,因为它依赖于开发人员将其按正确的顺序排列(简单忘记并稍后移动它)。

谢谢。

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc middleware


    【解决方案1】:

    有一个完整的 Asp.Net Core 身份验证/授权框架,值得一读。

    首先要考虑的是将身份验证与授权分开。身份验证中间件查看请求并尝试生成 ClaimsIdentity。如果他们失败了,他们不需要终止请求,他们可以让它匿名继续。这允许您链接多种身份验证。

    通过认证中间件后,就可以对结果进行授权了。您可以将其作为一个全面的中间件来执行,或者更精细地按 MVC 控制器或操作来执行。

    一般来说,中间件顺序对于运行良好的应用程序通常很重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2014-01-24
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多