我有一个Web API服务,允许用户创建新资源,例如:
后台进程从服务总线中获取消息,并调用数据访问层来创建资源。然而,为了强制访问控制,数据访问层需要知道用户是谁,以确定是否允许其创建该资源。我不能将此授权逻辑移动到前端Web API并使用受信任的子系统来处理数据访问层。 我的解决方案是获取数据访问层的访问令牌,并将其与资源创建有效载荷一起存储。但这会出现问题。由于在高负载下消息可能会被延迟处理,因此后台进程尝试使用令牌时,该令牌可能已过期。此时也没有办法更新令牌。
因此,我希望放宽后端层处理令牌时令牌有效性的要求。如果令牌有效(信任发行者等),只是过期时间已过,我希望验证中间件能够接受令牌。
但是,没有办法配置
我的方法有误吗?解决这个问题的可行替代方案是什么?
POST /api/resource
。然后,该服务将创建请求放在服务总线上,并响应HTTP 202 Accepted
。后台进程从服务总线中获取消息,并调用数据访问层来创建资源。然而,为了强制访问控制,数据访问层需要知道用户是谁,以确定是否允许其创建该资源。我不能将此授权逻辑移动到前端Web API并使用受信任的子系统来处理数据访问层。 我的解决方案是获取数据访问层的访问令牌,并将其与资源创建有效载荷一起存储。但这会出现问题。由于在高负载下消息可能会被延迟处理,因此后台进程尝试使用令牌时,该令牌可能已过期。此时也没有办法更新令牌。
因此,我希望放宽后端层处理令牌时令牌有效性的要求。如果令牌有效(信任发行者等),只是过期时间已过,我希望验证中间件能够接受令牌。
但是,没有办法配置
System.IdentityModel.Tokens.Jwt
令牌处理程序来验证过期的令牌。是否可以在不编写自定义令牌验证器的情况下完成这项工作?我的方法有误吗?解决这个问题的可行替代方案是什么?