JWT 使用 ES256 算法生成令牌

问题描述 投票:0回答:1

我正在尝试使用算法 ES256 生成 accessToken,我使用以下代码:

const jwt = require('jsonwebtoken')

const accessToken = jwt.sign(
  { name: 'John' },
  'testsecret',
  { expiresIn: '24h' },
  { algorithm: 'ES256' }
)

console.log(accessToken)

我得到了如下令牌:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiIsImlhdCI6MTYxNDY4MzUxNCwiZXhwIjoxNjE0NzY5OTE0fQ.Q9quAufyTQvPvKrTUXzRDUo-o0M4yXSXjqU4vZ9nvv A

我尝试将其粘贴到 jwt.io,它似乎是 HS256 令牌而不是 ES256,我错过了什么吗?

有件事我没有做对。你可以随时将上面的代码粘贴到nodejs中,你就会看到。

javascript node.js authentication jwt
1个回答
6
投票

您只需组合

expiresIn
algorithm
参数 - 该模块采用单个选项对象:

const jwt = require('jsonwebtoken');
const privatekey = `-----BEGIN EC PRIVATE KEY-----
MHcCAQEEICXoLhGdD6jzX5ePTY9O9YBgv0ZZ6oBWDRsjKaeASXp6oAoGCCqGSM49
AwEHoUQDQgAELCnuRSU9Vf+bx65i3Vbibj123RQFrIEaXuMuXunzPXGURKge07fy
FoiMucdGZ2MZGsm37JdlnVGd5yU1h4D4Rg==
-----END EC PRIVATE KEY-----`

const payload = {"id":1}

const accessToken = jwt.sign(payload, privatekey, {
  expiresIn: "24h",
  algorithm: "ES256",
});
© www.soinside.com 2019 - 2024. All rights reserved.