我正在编写以下代码以获取 jwt 令牌,我想使用SMART Health Cards Validation SDK对其进行验证
var jose = require("node-jose");
const {JWS} = require("node-jose");
async function a1(){
try {
const keystore={
keys: [
{
kty: 'EC',
d: 'gLkNmSBFWR67hEu62eVfVWhFbLGl309jOszsocqbexE',
use: 'sig',
crv: 'P-256',
kid: '6d858102402dbbeb0f9bb711e3d13a1229684792db4940db0d0e71c08ca602e1',
x: '5R2yrryD1ztBYnyKyQF5r5kzPUjnVnmR5pMe7H9ykNU',
y: 'VaqqjG0N2rSuijP9P9QiOjX4XEhIl8k8fzA6FZTSMhY',
alg: 'ES256'
}
]
}
const ks = await jose.JWK.asKeyStore(keystore);
const rawKey = ks.get(keystore.keys[0].kid)
const key = await jose.JWK.asKey(rawKey);
const payload =JSON.stringify({ "iss" : "https://spec.smarthealth.cards/examples/issuer", "sub": "1234567890", "name": "John Doe", "iat": 1516239022});
const token =await jose.JWS.createSign( {format: 'compact'},key).update(payload, "utf8").final();
console.log(token);
}catch (err) {
console.log(err);
}
}
a1();
我得到令牌:
eyJhbGciOiJFUzI1NiIsImtpZCI6IjZkODU4MTAyNDAyZGJiZWIwZjliYjcxMWUzZDEzYTEyMjk2ODQ3OTJkYjQ5NDBkYjBkMGU3MWMwOGNhNjAyZTEifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkVyaWMgRC4iLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE1MTYyMzkwMjJ9.dbjb9YHFCWaFYGQYyGDDL1iFvqk1Ed9k3-PAhVx4NtvFml1q0VcpW854IXW_J47f6Vf1otm2WeftVQHjY3K4vg
当我使用这个命令时:
node . --path C:\Users\User\Documents\Saguaro\health-cards-validation-SDK-main\jws.text --type jws
在 sdk 文件中,我收到以下错误:
错误
│·JWS 标头缺少“zip”属性。
│ · 膨胀 JWS 有效负载时出错。您是否使用原始 DEFLATE 压缩?
│ 不正确的标头检查
│ · JWS 验证失败:在颁发者集中找不到 'kid' = 6d858102402dbbeb0f9bb711e3d13a1229684792db4940db0d0e71c08ca602e1 的密钥
请让我知道发行者集合以及如何将孩子价值放入发行者集合中。另外,放气压缩是什么意思以及如何解决这个问题。请注意:以上为伪代码。