java - Quarkus SmallRye-JWT JSON Web 密钥集刷新间隔
问题描述
我正在使用 SmallRye JWT 生成和验证 JWT 令牌。
使用微服务 A,我生成 JWT 令牌。
使用微服务 B,我必须验证 JWT 令牌。
在微服务 B 中,我使用以下属性:
smallrye:
jwt:
verify:
key:
location: http://localhost:8084/key
jwks:
refresh-interval: 2
forced-refresh-interval: 2
token:
kid: 123452
微服务 A 具有生成 JWKS 的端点 /key:
{
"keys": [
{
"kty": "RSA",
"kid": "123452",
"n": "i7y5smIoGrMHAQnwef7DfhSsrm-locPO_I1LkKHHVb4ol_Tfu3Me5uswb7M92H_A1Mhub4Zsugy22OqKVNnX9Z9UDpu4yG-KfPJRNNI9Rzo0fIBHzf8_g_cIdiNJJbODndxVAr4I38ZcFV6rSw",
"e": "AQAB"
}
]
}
当我同时运行两个微服务时,我可以验证微服务 B 中的令牌......但是如果我重新启动微服务 A(它将生成另一个 JWKS),但微服务 B 将无法再验证 JWT 令牌。在 SmallRye - Quarkus 文档中,我发现了以下属性:
smallrye.jwt.jwks.refresh-interval:JWK 缓存刷新间隔,以分钟为单位。除非 mp.jwt.verify.publickey.location 指向基于 HTTP 或 HTTPS URL 的 JWK 集,并且没有从 JWK 集端点返回具有正 max-age 参数值的 HTTP Cache-Control 响应标头,否则它将被忽略。
和
smallrye.jwt.jwks.forced-refresh-interval:以分钟为单位的强制 JWK 缓存刷新间隔,用于限制由于缓存没有 JWK 密钥而导致令牌验证失败时可能发生的强制刷新尝试的频率与孩子与当前令牌的孩子标头匹配的属性。除非 mp.jwt.verify.publickey.location 指向基于 HTTP 或 HTTPS URL 的 JWK 集,否则它将被忽略。
如您所见,我将两个属性都设置为 2 分钟:
smallrye:
jwt:
verify:
key:
location: http://localhost:8084/key
jwks:
refresh-interval: 2
forced-refresh-interval: 2
token:
kid: 123452
但它不起作用。
我该怎么做才能使它起作用?我想再次调用 key.location (http://localhost:8084/key) 来再次阅读新的 JKWS。
谢谢你。
解决方案
推荐阅读
- ios - Objective-c 语法和 C 语法的不同结果
- angularjs - Angular cli:在 ngUpgrade 混合项目中包含 angularjs 组件样式
- angularjs - 数据表第一列始终是可排序的
- java - 为什么 setOnTouchListener 后另一个不起作用(Android)
- laravel - Redis 连接 [缓存] 未配置 laravel 错误
- python - 分析来自 Kafka 消费者的消息
- forms - 如何向 symfony 小部件根元素添加一个类
- javascript - 带有浮动滚动条插件的handsontable
- react-native - 将 react-navigation 更新到 v3 后 undefined 不是对象
- vue.js - 从 Axios GET 设置数据