You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus中SmallRye JWT签名方法读取K8s密钥时崩溃

解决Quarkus从Kubernetes Secret读取JWT密钥签名失败的问题

问题总结

在Quarkus REST应用中,将JWT签名私钥和验证公钥存储到Kubernetes Secret后,调用JWT签名方法时触发SRJWT05028: Signing key can not be created from the loaded content错误,但本地直接使用密钥文件验证是正常的。

解决方案

修改application.properties中的配置,直接引用Kubernetes Secret内的密钥字段,无需添加Secret名称前缀:

quarkus.kubernetes-config.secrets=jwt-keys
# 直接引用Secret中的privkey字段值
mp.jwt.sign.key=${privkey}
# 直接引用Secret中的pubkey字段值
mp.jwt.verify.publickey=${pubkey}
smallrye.jwt.sign.key=${privkey}

原因分析

配置quarkus.kubernetes-config.secrets=jwt-keys后,Quarkus会自动将该Secret内的所有键值对(privkey、pubkey)解码并加载为应用的独立配置属性。之前使用jwt-keys.privkey的写法,会让SmallRye JWT误将字符串"jwt-keys.privkey"当作密钥内容,而非从Secret中读取实际的密钥值,因此无法解析出有效的签名密钥。

额外验证步骤

  1. 开启调试日志确认加载状态:添加日志配置,查看Kubernetes配置加载细节,确认密钥是否正确读取:
quarkus.log.category."io.quarkus.kubernetes.config".level=DEBUG
  1. 检查Secret权限:确保运行应用的Pod对应的ServiceAccount拥有读取my-namespace命名空间下jwt-keys Secret的权限。
  2. 确认密钥格式:已生成的pkcs8.key是无密码的PKCS8格式,符合SmallRye JWT的要求,此环节无需调整。

内容的提问来源于stack exchange,提问作者bsod87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:54:53