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

如何利用npm jose库创建无签名(unsigned)JWT?

使用jose库创建无签名JWT的正确方法

当你需要创建alg为none的无签名JWT时,问题出在签名步骤传入的密钥类型不符合要求。针对你的场景,调整代码如下:

const jose = require('jose')

async function getJwt() {
    const jwt = await new jose.SignJWT({ 'demo': 'unsigned JWT' })
        .setProtectedHeader({ alg: 'none' })
        .sign(null) // 传入null而非Uint8Array类型的密钥
    console.log(jwt)
}
getJwt()

关键说明:

  • 对于none算法,jose库要求签名时传入的密钥必须是KeyObject/CryptoKey类型,或者直接传null(库内部会处理空签名逻辑)。你之前传入的Uint8Array类型密钥不符合要求,因此触发类型错误。
  • 执行上述代码后,会生成标准的无签名JWT,格式为[Base64编码的Header].[Base64编码的Payload].(第三部分为空字符串)。
  • 注意:无签名JWT不具备防篡改能力,只能在完全信任的环境中使用,切勿在公开或不可信场景下传输。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:13:15