首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jose创建JWK和JWS,但是出现错误“不支持的算法”

使用jose创建JWK和JWS,但是出现错误“不支持的算法”
EN

Stack Overflow用户
提问于 2021-07-09 15:07:06
回答 1查看 4.4K关注 0票数 1

我必须使用ES256算法加密有效载荷。还必须在JWK中使用have,如下代码所述。我正在使用jose库创建签名。以下是代码:

代码语言:javascript
复制
var jose = require("node-jose");

async function a1(){
    try {
    const keystore = [
  {
    kty: 'EC',
    kid: '6d858102402dbbeb0f9bb711e3d13a1229684792db4940db0d0e71c08ca602e1',
    use: 'sig',
    alg:'ES256'
  }
]
const ks = await jose.JWK.asKeyStore(keystore);
const rawKey = ks.get(keystore[0].kid)
const key =  await jose.JWK.asKey(rawKey);

const payload =JSON.stringify({"sub": "1234567890",  "name": "Eric D.",  "role": "admin","iat": 1516239022});
    
const token =await jose.JWS.createSign({alg: "ES256", format: 'compact'}, key).update(payload, "utf8").final();

    }catch (err) {
    console.log(err);
  }
    
}
a1();

但我错了:

不支持的算法

请让我知道为什么会出现这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 15:52:46

alg参数({alg: 'ES256'})是正确的,但提供的JWK不完整,缺少一些参数

您必须提供曲线(crv)、x和y坐标(xy)和ECC私钥(d)。

代码语言:javascript
复制
  const keystore = [
  {
    kty: 'EC',
    kid: '6d858102402dbbeb0f9bb711e3d13a1229684792db4940db0d0e71c08ca602e1',
    use: 'sig',
    alg:'ES256',
    crv: "P-256",
    x  : "SVqB4JcUD6lsfvqMr-OKUNUphdNn64Eay60978ZlL74",
    y  : "lf0u0pMj4lGAzZix5u4Cm5CMQIgMNpkwy163wtKYVKI",
    d  : "0g5vAEKzugrXaRbgKG0Tj2qJ5lMP4Bezds1_sTybkfk"    
  }]

上述示例中x、y和d的值取自这篇文章,但通常您必须生成自己的键,这也在链接的文章中或通过使用在线密钥生成器来描述。

结果将是一个签名的令牌:

代码语言:javascript
复制
eyJhbGciOiJFUzI1NiIsImtpZCI6IjZkODU4MTAyNDAyZGJiZWIwZjliYjcxMWUzZDEzYTEyMjk2ODQ3OTJkYjQ5NDBkYjBkMGU3MWMwOGNhNjAyZTEifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkVyaWMgRC4iLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE1MTYyMzkwMjJ9.gmVcj7rcENUDesVOSKRzvcMbxT_3zf2Sz771pdy3E1t4P-aKFxV1Vkcry2gvoQ1k11xvE0RSs3jYa13qsjFAzg

注意:令牌是一个签名的令牌,负载未加密。如果需要/要求有效负载加密,请考虑创建加密令牌(JWE)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68318989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档