![](/img/trans.png)
[英]The OWIN authentication pipeline, and how to use Katana middleware correctly?
[英]How to compose multiple authentication handlers in Katana?
我想创建一个Web API服务,该服务公开一个可以使用客户端证书或 JWT令牌进行身份验证的资源。
我找到了一些用于验证客户端证书的中间件,以及一些有关如何创建自己的身份验证中间件的很好的说明。 Microsoft具有验证JWT令牌的中间件OAuthBearerAuthenticationMiddleware
。 显然我不能同时安装它们,因为当身份验证失败时,第一个中间件将终止管道。
因此,我想我将创建一个复合身份验证中间件类,该类具有两个AuthenticationHandler
对象,并将从其AuthenticateCoreAsync()
的处理程序中调用AuthenticateAsync()
,直到一个返回有效的AuthenticationTicket
为止。 问题在于AuthenticationMiddleware
类中的CreateHandler
方法受到保护,因此我似乎无法组成这些对象。
我无法自己实例化OAuthBearerAuthenticationHandler
类,因为它是内部的。
如何在不将代码复制到自己的处理程序中的情况下重新使用这些现有的中间件组件来启用两种身份验证?
还是我会走错路,在同一个Web API服务上是否有另外两种方式来使用两种身份验证方法?
身份验证失败时,身份验证中间件终止管道实际上是不正确的。 它被设计为可组合的。
每个中间件可以贡献零个或一个身份,最终成为ClaimsPrincipal
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.