Ошибка при использовании функции декодирования jsonwebtoken в AWS Lambda

Я создаю Lambda-авторизатор для использования с API-интерфейсом API Gateway Web Socket.

Для обработки токена я использую jsonwebtoken и расшифровываем токен вот так:

const jwt = require('jsonwebtoken');
const decodedJwt = jwt.decode(token, {complete: true});

Когда я запускаю его локально на моей машине, он работает нормально, но когда он развернут на AWS, он не работает.

Вызов jwt.decode возвращается null и не исключение не выбрасывается. Кроме того, я просмотрел документы, но не могу найти способ получить какое-либо сообщение об ошибке или что-то вроде этого.

Я сделал некоторую регистрацию, и токен правильно получен из запроса и передан функции. Кроме того, если я копирую токен из журналов AWS и запускаю свой код локально, он работает нормально.

Я пробовал это с версиями Nodejs 8.10 и 10.x

Любая идея о том, как решить эту проблему или как получить сообщение об ошибке, чтобы понять, что происходит?

1 ответ

Решение

Так что после некоторого времени борьбы я понял, в чем проблема.

При получении токена в AWS я использовал следующий код:

const token = event.queryStringParameters.Authorization;

Но по какой-то причине event.queryStringParameters.Authorization также будет включать двойные кавычки в начале и конце токена.

Так что я думал, что я проходил TOKEN к функции декодирования, в то время как я фактически проходил "TOKEN",

Я использовал подстроку, чтобы удалить лишние двойные кавычки...

const token = event.queryStringParameters.Authorization.substring(1, event.queryStringParameters.Authorization.length - 1);

... и теперь работает нормально.

Ответьте здесь на случай, если у кого-то возникнет такая же проблема.

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