0

我正在构建一个 Lambda 授权方以与 API Gateway Web Socket api 一起使用。

为了处理令牌,我jsonwebtoken像这样使用和解码令牌:

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

当我在我的机器上本地运行它时,它可以正常工作,但是当它部署到 AWS 时它无法正常工作。

jwt.decode 调用正在返回null并且没有抛出异常。此外,我查看了文档,但找不到获取任何错误消息或类似内容的方法。

我做了一些日志记录,从请求中正确检索到令牌并传递给函数。此外,如果我从 AWS 日志中复制令牌并在本地运行我的代码,它工作正常。

我已经尝试过使用 Nodejs 运行时版本 8.10 和 10.x

关于如何解决此问题或如何获取错误消息以了解正在发生的事情的任何想法?

4

1 回答 1

0

所以在挣扎了一段时间后,我意识到问题出在哪里。

在 AWS 上检索令牌时,我使用了以下代码:

const token = event.queryStringParameters.Authorization;

但由于某种原因,event.queryStringParameters.Authorization令牌的开头和结尾也会包含双引号。

所以我以为我在传递TOKENdecode 函数时实际上是传递"TOKEN".

我已经使用子字符串来删除额外的双引号......

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

...现在它工作正常。

在这里回答,以防有人遇到同样的问题。

于 2019-05-18T00:28:29.847 回答