javascript - Cannot verify JWT with RS256 - invalid algorithm
问题描述
I am trying move my JWT Auth from secret phrase to RS256
here is example code:
import fs from 'fs'
import jwt from 'jsonwebtoken'
const private_key = fs.readFileSync('private.key')
const public_key = fs.readFileSync('public.pem')
const token = jwt.sign({
some: 'payload'
}, private_key, { algorithm: 'RS256' })
const verified = jwt.verify(token, public_key)
Here is format of my public key:
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAyLVWMJHRJ0VRPiyhjvPJTwpgNkMd4jjvUxEfy54COanbrL+GeOVd
NB2YooopYzgJJZyVhHSD+GwyH7WTvsItwNkfMiZKmjUIEA9dIfcbmHNXtfXraiSh
aTSO7NIREGzGQjBfzRGNeWpR83P+ffE5H0gfi9FFJlvV8QSLSSXJNMXVFAga//fb
uT/CYLg29bzEBtNSdgTHNrbwSvYzGFDOHNChDelX6fp34JMhtb6UNh6cIqhURclK
reQHz2oDcBaXnCAHjvC8p/IoG8xV2Ws5gK6bVW7h0EP5XoaUVHVpjPv5TDFz+veR
/lkKdowQU74E5oyei1WzDXSTusCR9gKIcQIDAQAB
-----END RSA PUBLIC KEY-----
And I am getting following error:
JsonWebTokenError: invalid algorithm
When I try to verify on jwt.io token is successfully signed.
解决方案
尝试这个:
var fs = require('fs')
var jwt = require('jsonwebtoken')
const private_key = fs.readFileSync('private.key', 'utf8')
const public_key = fs.readFileSync('public.pem', 'utf8')
const token = jwt.sign({
some: 'payload'
}, private_key, { algorithm: 'RS256' })
const verified = jwt.verify(token, public_key, { algorithms: 'RS256'})
私钥:(private.key)
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDCDzF83j+imr1t2fNtfT4Fusm3LJAzFK49xK3bepARl2gcKKNm
YJI6svZ8mznkoDp1uCuwyBKVIkRfrGAd1FuuVrzMi0kairWGz71FHbcubKy/6AOG
caONmk0K1DjS4dIzJLmIeUpv2jrtIctGDt2tXg4OQi1aM59yS4efZlbNxQIDAQAB
AoGARlZPb5z2n69KfaiDzOmaM2Vye4wRcBJM3WKOSYDw+w9P0vT/1LmoBtKa+Ksi
nrVcuxJX86lw4tEayzqlU+qGl9Z5uOI+vMjh6e4hpEQN2KVrVnpEUrzVX8yZN22A
KWWZsWucU7djb8wLpezYNYd5bItUuOXFRnmrjuPQhqLXbPkCQQDmiR+zwmcOTir0
9auT88fTeLpr7XT+YyrBOHjgwUTd8HO3C2FuL/dDv3pP9LrsUgynMTMef3nF2qh0
40bep4qPAkEA136gUbisosNHa7GRKCSPUobmEBc4pRr2CtaUbAvGFJMbV+RCzu7a
n0hHbPZwlWBTN/WIfrj5dvNRa+lbk3PcawJAem2P/HLdL+erQHPHLsdj85ZFylNM
slwPtJU8/H8nB4ZOrYLJty6Z7cyeNCAPtLjOJ2wlbajdDonUtF6OoGfxWQJBALGp
TOVzGqkp1CUehO0SjzLb0qrraiD8xGKVHFKjtk/aJE3m+4l9dLKjNXfJCXKtso5N
GJZZTBpcagFMp9o+SDcCQQCKwJ9tVu/4X5SFgbVSr06u1tPkCccYFAiqbpEH4fPx
zt18ubZgiViKiYKT6gHZPKI8bhkmvG/Fg/zJ9FBYjl+9
-----END RSA PRIVATE KEY-----
公钥:(public.pem)
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCDzF83j+imr1t2fNtfT4Fusm3
LJAzFK49xK3bepARl2gcKKNmYJI6svZ8mznkoDp1uCuwyBKVIkRfrGAd1FuuVrzM
i0kairWGz71FHbcubKy/6AOGcaONmk0K1DjS4dIzJLmIeUpv2jrtIctGDt2tXg4O
Qi1aM59yS4efZlbNxQIDAQAB
-----END PUBLIC KEY-----
推荐阅读
- python-3.x - 我如何创建决策变量
- javascript - 如何使用Vue删除输入标签中的所有字符串
- terminal - conda init 没有初始化新的 shell
- python - 我怎样才能快速迭代一个大列表?
- mysql - SQL(mySQL)查找某些列出的家庭中是否有表亲
- c# - 如何在不将 Id 作为参数传递的情况下获取特定用户的数据?
- reactjs - 如何处理 React 和 Express App 中的类型?
- wso2 - 如何在 WSO2 API Manager 3.0.0 中配置和查看 API 统计信息?
- json - 如何使用 Prepros 缩小 JSON?
- javascript - 如何正确地将获取的 API 响应注入到表中