首页 文章

验证servicebus后面的过期JWT令牌

提问于
浏览
2

我有一个Web API服务,允许用户创建一个新资源,如: POST /api/resource . 然后,该服务将创建请求放在服务总线上,并以 HTTP 202 Accepted 响应 .

后台进程从服务总线获取消息并调用数据访问层以创建资源 . 但是,为了实施访问控制,数据访问层需要知道用户是谁以确定是否允许他/她创建该资源 . I cannot move this authorization logic into the front-end Web API and use a trusted subsystem for the data access layer.

enter image description here

所以我的解决方案是获取数据访问层的访问令牌,并将其与资源创建有效负载一起存储 . 但这提出了一个问题 . 由于消息可以在重负载下稍后处理,因此令牌可能在后台进程尝试使用它时已过期 . 在那一刻,也无法更新令牌 .

所以我想在后端层处理时放松对令牌有效性的要求 . 如果令牌有效(受信任的颁发者等),除了它已超过过期时间,我希望验证中间件接受令牌 .

但是没有办法配置System.IdentityModel.Tokens.Jwt令牌处理程序来验证过期的令牌 . 这可以在不编写我自己的令牌验证器的情况下完成吗?

我的方法有误吗?什么是解决这个问题的可行方案?

2 回答

  • 2

    JWT处理程序具有扩展点,允许您保留所有默认验证逻辑,并仅覆盖要自定义的方面 - 在这种情况下是到期验证 . 您可以传递自己的TokenValidationParameters.LifetimeValidator实现来实现这一点 .

  • 0

    看看 Refresh Tokens . Auth0 has a good article用一些示例代码解释了背景及其使用方法 .

相关问题