Soy nuevo en JWT y tengo problemas para verificar el JWT cuando uso el algoritmo RS256. Recibo el error 403 cada vez que intento verificar el token, pero no entiendo por qué. Estoy seguro de que estoy usando los archivos clave correctos. ¡Incluso intenté escribir: jwt.verify(publicKey, publicKey) e incluso con eso obtuve el error 403! ¿No se supone que deben coincidir exactamente? ¿Qué está haciendo exactamente jwt.verify()? ¿Está comprobando si el primer valor es igual al segundo valor? ¿Está decodificando la clave?
Así es como firmo el token:
import fs from 'fs' const privateKey = fs.readFileSync('./private.pem', 'utf8') const accessToken = jwt.sign(payload, privateKey, { algorithm: 'RS256', expiresIn: '1h' })Y así es como verifico el token:
import createError from 'http-errors' const authorize = (req, res, next) => { const authorization = req.headers.authorization?.split(' ') const publicKey = fs.readFileSync('./public.pem', 'utf8') try { const payload = jwt.verify(authorization[1], publicKey) next() } catch (err) { next(createError(403)) } }