我目前正致力于在我的.NET Core WebAPI中集成JWT令牌身份验证,并在Startup.CS中成功设置了身份验证中间件。
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
...
}
我想插入我的自定义声明验证逻辑,但没有找到解释如何以及在何处扩展或注入逻辑的有用文档。
特定用例是针对列入黑名单的JTI检查传入令牌中的JTI声明,如果找到,则拒绝该令牌。
到目前为止,我已尝试使用上述逻辑编写另一个中间件并在UseJwtBearerAuthentication之后插入它,但我不确定它是否是正确的方法。
答案 0 :(得分:0)
我之前已经在内置的UseJwtBearerAuthentication中间件之间编写了一个中间件来验证针对黑名单的JTI声明,但无法正确指导响应。
此后我将逻辑移至自定义授权策略处理程序。之后,我只使用[Authorized(Policy = [PolicyName])]注释标记了我的控制器。
我不确定这是处理此问题的最佳方式,因此我仍然愿意听取您们所有人的意见,特别是身份验证中间件的扩展,通过自定义验证覆盖它或连接另一个自定义验证中间件可能吗?
以下是创建自定义授权策略处理程序的方法:
Microsoft - Custom Policy-Based Authorization
我已经探索了中间件使传入的JWT令牌无效的可能性。但是,我注意到,在请求短路时,状态代码和响应消息将受到影响,因为中间件会将其传递回默认的JwtBearerAuthentication中间件,这将影响其自身的状态和响应消息。