У меня возникает проблема при расшифровке токена jwt с использованием библиотеки node-jose в проекте Node.js
В node-jose у меня возникает следующая проблема при расшифровке токена jwt. Мое шифрование работает нормально.
Ошибка:
{
2022-06-07 06:58:58,428: "message": "**Algorithm not allowed: undefined**",
2022-06-07 06:58:58,428: "stack": "Error: Algorithm not allowed: undefined\n at /myproject/test/wallet/node_modules/node-jose/lib/jwe/decrypt.js:146:37\n at <anonymous>\n at process._tickCallback (internal/process/next_tick.js:160:7)",
2022-06-07 06:58:58,428: "level": "error"
2022-06-07 06:58:58,428:
}
Код:
const jose = require('node-jose');
exports.encrypt = async function (jwtToken) {
if (jwtToken && jwtToken != null && jwtToken != undefined && jwtToken != "") {
const pubKey = "sdf#!@!$dsfdtestdsfsdfdsfdsf&^%sdfdfsd"
try {
let encryptionKey = await jose.JWK.asKey(pubKey, 'pem', { alg: 'RSA-OAEP-256' });
let contentAlg = 'A256GCM';
let options = {
contentAlg: contentAlg,
compact: true,
fields:
{
'iat': Math.round(new Date().getTime() / 1000)
}
};
Шифрование начинается здесь:
var encryptedData = await jose.JWE.createEncrypt(options,
encryptionKey).update(Buffer.from(jwtToken, 'utf8')).final();
if (encryptedData) {
return Promise.resolve(encryptedData);
}
} catch (err) {
return Promise.reject(err);
}
}
};
exports.decrypt = async function (encryptedToken) {
if (encryptedToken && encryptedToken != null && encryptedToken != undefined && encryptedToken != "") {
const priKey = "DAG$$fh$%341212(*&^%$sdhfksdhfdsfsdfsd";
try {
var opts = {
algorithms: ["*"]
};
let decryptionKey = await jose.JWK.asKey(priKey, 'pem', { alg: 'RSA-OAEP-256', enc: 'A256GCM' });
const decryptedToken = await jose.JWE.createDecrypt(decryptionKey,
opts).decrypt(encryptedToken);
if (decryptedToken) {
return Promise.resolve(decryptedToken.plaintext.toString());
}
} catch (err) {
return Promise.reject(err);
}
}
};