2017-05-24 223 views
0

我目前正在对我的.NET核心的WebAPI集成JWT令牌认证,并已成功地建立了认证中间件作为这样的Startup.CS.NET核心JWTBearerAuthentication扩展

app.UseJwtBearerAuthentication(new JwtBearerOptions 
     { 
      ... 
     } 

我想插入我的自定义声明验证逻辑,但没有找到有用的文档说明如何以及在何处扩展或注入我的逻辑。

一个特定的用例是检查传入令牌中的JTI声明与黑名单JTI列表,如果找到,则拒绝令牌。

到目前为止,我已经尝试使用上述逻辑编写另一个中间件,并在UseJwtBearerAuthentication之后插入它,但我不确定它是否是正确的方法。

回答

0

我以前编写了一个中间件,插入内置的UseJwtBearerAuthentication中间件之间,以验证JTI对黑名单的声明,但无法正确指示响应。

我从那时起将逻辑移动到自定义授权策略处理程序。之后,我只用[Authorized(Policy = [PolicyName])]注释标记了我的控制器。

我不确定它是否是处理此问题的最佳方法,因此我仍然乐于听取您是如何做到这一点的,特别是身份验证中间件的扩展,使用自定义验证或接线覆盖它另一个自定义验证中间件也许?


这里是如何去创建一个自定义授权策略处理程序:

Microsoft - Custom Policy-Based Authorization


我已经学习了中间件的可能性无效传入JWT令牌。但是,我注意到,在请求短路时,状态码和响应消息将受到影响,因为中间件会将其传递回默认的JwtBearerAuthentication中间件,这会影响其自己的状态和响应消息。