国家: 2 个带有 Rest 端点的 Quarkus 应用程序,使用 JWT 令牌进行身份验证。
场景:
用户使用即将过期但尚未过期的 JWT 令牌调用第一个应用程序的 API。假设将在 5 秒后过期。
我们有 2 个 Quarkus 服务,第一个服务接受使用上述令牌的调用,处理 10 秒后,它使用令牌传播休息客户端调用第二个 quarkus 应用程序。因此,由于传播的令牌已过期,第二个调用失败,并从第二个应用程序强制出现 401 Auth 错误。 这个问题有解决办法吗?
我们已经做了什么:
我们尝试使用以下几个属性来延长 quarkus 进行的过期检查的寿命,但没有任何效果:
quarkus.oidc.credentials.jwt.lifespan
quarkus.oidc.token.lifespan-grace
mp.jwt.verify.clock.skew
唯一成功的方法是更改 io.quarkus.oidc 的值。在调试会话期间手动进行 OidcTenantConfig.lifespanGrace。 那么,问题是我们如何使用属性或编程方式在上述字段中设置自定义值?
实际上
quarkus.oidc.token.lifespan-grace=60
正在按预期完成工作。当前时间允许晚于令牌过期时间至多配置的秒数。
就我而言,这不起作用,因为我使用
implements TenantConfigResolver
覆盖配置,所以我必须在那里添加等效内容 config.getToken().setLifespanGrace(60);