身份验证中间件 - 表示失败

时间:2017-07-14 18:08:32

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

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

我的想法是,我想允许多种身份验证方法,例如; basic(使用授权标头),在请求正文中传递凭据,可能会获取持有者令牌等。

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

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

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

如果我打算支持多种身份验证方法,最好是将它们全部放在同一个中间件中,还是可以(或者更好)将每个中间件设置为1个身份验证机制。 如果可能的话,我怎样才能区分“提供的凭据是坏的,在这里失败”和“这个中间件找不到它支持的任何适当的凭证,但也许下一个将会”

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

通过身份验证中间件后,您可以对结果进行授权。您可以将其作为一个全面的中间件执行,或者根据MVC控制器或操作更精细地执行此操作。

一般而言,中间件订单对于运行良好的应用程序通常很重要。