我有一个Web API服务,允许用户创建新资源,如:POST /api/resource
。该服务然后将创建请求放在服务总线上并以HTTP 202 Accepted
作出响应。验证服务总线后的过期JWT令牌
后台进程从服务总线中获取消息并调用数据访问层来创建资源。但是,为了执行访问控制,数据访问层需要知道用户是由谁来决定是否允许他/她创建该资源。 我无法将此授权逻辑移入前端Web API,并将可信子系统用于数据访问层。
所以我的解决办法是让对数据访问层的访问令牌,并将其与创建资源有效载荷存储。但是这提出了一个问题。由于该消息可能会在重负载之后进行很多处理,因此令牌在后台进程尝试使用它时可能已过期。此时,无法更新令牌。
所以我想放宽在后端层处理令牌的有效性的要求。如果令牌有效(可信发行者等),但超过了过期时间,我希望验证中间件接受该令牌。
但是没有办法配置System.IdentityModel.Tokens.Jwt
令牌处理程序来验证过期的令牌。这可以在没有写我自己的令牌验证器的情况下完成吗?
我的方法错了吗?什么是解决这个问题的可行方案?
问:当令牌被添加到服务总线开始时,令牌是否有效(如授权)?或者我误解了你的问题 – Nkosi
@Nkosi当然,该标记在Web服务获取它时有效。但是在工作人员服务使用它时可能会过期。服务总线创建暂时解耦。消息可以在服务总线上处理,或者在一小时后处理。 – MvdD
没错。因此即使令牌过期,与JWT关联的包含用户仍可以在后端提取以进行访问控制。你对JWT有多了解?我问,因为我的想法可能看起来是手动的,你需要知道解码智威汤逊 – Nkosi