Ошибка при использовании функции декодирования 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);
... и теперь работает нормально.
Ответьте здесь на случай, если у кого-то возникнет такая же проблема.