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

Mirth生成JWT提交OAuth2服务报错,jwt.io验证签名无效求助

问题排查点
  • 密钥格式不匹配
    你当前用到的PKCS8EncodedKeySpec仅支持PKCS#8编码的私钥,默认openssl生成的RSA私钥多为PKCS#1格式(头部标识为-----BEGIN RSA PRIVATE KEY-----),和要求的格式不符。你可以执行以下命令将现有私钥转为PKCS#8格式:
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in privatekey.pem -out privatekey_pkcs8.pem

转换后的私钥头部标识为-----BEGIN PRIVATE KEY-----,才可被Java密钥规范正常解析。

  • 私钥内容处理错误
    你代码中仅提到移除私钥头部,实际处理时还需要完整移除尾部标识(如-----END PRIVATE KEY-----),同时删除所有换行符、空格等额外字符,再进行base64解码,否则解码后的字节序列错误会直接导致签名异常。
  • 密钥工厂未正确初始化
    你给出的代码片段未包含keyFac的初始化逻辑,必须在生成私钥前指定匹配的算法,例如使用RS256签名时需要提前执行:
keyFac = Packages.java.security.KeyFactory.getInstance("RSA");

未初始化或算法指定错误都会生成无效的私钥对象。

  • JWT编码与算法不匹配
  1. JWT的头部、载荷必须使用Base64URL编码,而非普通Base64:需要将+替换为-、/替换为_、删除末尾填充的=,否则签名输入内容和标准不符会导致验证失败
  2. 确保JWT头部alg字段声明的算法,和你实际签名使用的算法完全一致
  • jwt.io验证公钥格式错误
    你生成的publickey509.pem是X.509格式证书,粘贴到jwt.io公钥框时需要保留完整的-----BEGIN CERTIFICATE-----、-----END CERTIFICATE-----标识,不要自行删除头尾,否则jwt.io无法正确解析公钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:04