Ошибка при использовании функции декодирования jsonwebtoken в AWS Lambda - PullRequest
0 голосов
/ 18 мая 2019

Я создаю 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 Ответ

0 голосов
/ 18 мая 2019

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

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

const token = event.queryStringParameters.Authorization;

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

Поэтому я подумал, что передаю TOKEN функции декодирования, когда фактически передаю "TOKEN".

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

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

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

Ответьте здесь, если у кого-то есть такая жевыпуск.

...