You need to enable JavaScript to run this app. SMART Health Card令牌校验失败相关问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

SMART Health Card令牌校验失败相关问题咨询

核心概念解释

什么是issuer set

issuer set(发行方密钥集)是SMART Health Cards校验SDK用来验证JWS签名的可信公钥集合,它会根据JWT payload中的iss(发行方地址)字段,匹配对应发行方公开的JWKS(JSON Web Key Set),再通过JWS header里的kid找到对应公钥完成验签,报错就是因为SDK找不到你指定kid对应的公钥。

什么是DEFLATE压缩

DEFLATE是一种通用无损数据压缩算法,SMART Health Cards规范明确要求JWS的payload必须先使用无gzip头、无校验和的raw DEFLATE格式压缩后再签名,你直接传入了未压缩的JSON字符串,所以SDK解压时触发错误。

报错解决步骤

三个报错按顺序修复即可:

修复JWS header missing 'zip' property错误

生成JWS时在header配置中新增zip: 'DEF'字段,标识payload采用DEFLATE压缩,修改createSign入参:

const token =await jose.JWS.createSign(
  {format: 'compact', zip: 'DEF'}, // 新增zip配置
  key
).update(压缩后的payload, "utf8").final();

修复Error inflating JWS payload错误

先对JSON payload做raw DEFLATE压缩再签名,可借助pako库实现:

  1. 安装依赖:npm install pako
  2. 修改payload处理逻辑:
const pako = require('pako')
const payload =JSON.stringify({ "iss" : "https://spec.smarthealth.cards/examples/issuer", "sub": "1234567890", "name": "John Doe", "iat": 1516239022});
// 执行raw DEFLATE压缩
const compressedPayload = pako.deflateRaw(payload)

修复can't find key with 'kid' in issuer set错误

根据使用场景选一种方案处理即可:

  • 本地测试场景:手动指定本地发行方密钥集
    1. 新建issuer-set.json文件,填入对应iss的公钥(注意删除私钥参数d,仅保留公钥参数):
    {
      "https://spec.smarthealth.cards/examples/issuer": {
        "keys": [
          {
            "kty": "EC",
            "use": "sig",
            "crv": "P-256",
            "kid": "6d858102402dbbeb0f9bb711e3d13a1229684792db4940db0d0e71c08ca602e1",
            "x": "5R2yrryD1ztBYnyKyQF5r5kzPUjnVnmR5pMe7H9ykNU",
            "y": "VaqqjG0N2rSuijP9P9QiOjX4XEhIl8k8fzA6FZTSMhY",
            "alg": "ES256"
          }
        ]
      }
    }
    
    1. 运行校验命令时新增参数指定本地密钥集:
    node . --path C:\Users\User\Documents\Saguaro\health-cards-validation-SDK-main\jws.text --type jws --issuer-set ./issuer-set.json
    
  • 生产场景:将你的公钥JWKS文件发布到iss字段对应域名的.well-known/jwks.json路径,SDK会自动拉取对应公钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 01:24:04