У меня возникает проблема при расшифровке токена 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);
            } 
        }
    };

0 ответов

Другие вопросы по тегам