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

Quarkus SmallRye JWT生成令牌报SRJWT05021错误如何解决?

问题根因

SmallRye JWT生成签名JWT时,需要显式配置签名所用私钥的路径。你当前配置中的mp.jwt.decrypt.key.location是用于解密JWE加密令牌的配置项,不适用于JWS签名场景,因此触发SRJWT05021报错。

解决步骤

  1. 确认你的privateKey.pem私钥文件已存放在项目src/main/resources目录下
  2. 修改application.properties配置,新增签名私钥路径配置,删除无用的解密密钥配置:
quarkus.http.cors=true
quarkus.http.cors.origins=*

quarkus.smallrye-jwt.enabled=true
mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
mp.jwt.verify.issuer=https://example.com/issuer
# 新增JWT签名用私钥配置,替换原有错误的解密密钥配置
smallrye.jwt.sign.key.location=privateKey.pem
  1. 若你的私钥设置了访问密码,额外新增如下配置:
smallrye.jwt.sign.key.password=你的私钥密码
  1. 若私钥为PKCS#1格式,需要先转换为Quarkus支持的PKCS#8格式,转换命令如下:
openssl pkcs8 -topk8 -nocrypt -in privateKey.pem -out privateKey_pkcs8.pem

转换完成后将配置中的私钥文件名修改为转换后的privateKey_pkcs8.pem即可。
5. 可选优化:生成JWT时添加过期时间,避免令牌永久有效:

@ApplicationScoped
public class JwtGen {
     public String gen() {
            String token =
               Jwt.upn("arthur") 
                 .groups(new HashSet<>(Arrays.asList("User")))
                 // 有效期设置为3600秒(1小时)
                 .expiresIn(3600)
                 .sign();
            return token;
        }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:57:04