在 AWS Lambda 上使用 jsonwebtoken 解码函数时出错
Error using jsonwebtoken decode function on AWS Lambda
我正在构建一个 Lambda 授权方以与 API 网关 Web 套接字一起使用 api。
为了处理令牌,我正在使用 jsonwebtoken
并像这样解码令牌:
const jwt = require('jsonwebtoken');
const decodedJwt = jwt.decode(token, {complete: true});
当我 运行 在我的机器上本地运行时它工作正常,但是当它部署到 AWS 时它不工作。
jwt.decode 调用返回 null
并且没有抛出异常。此外,我查看了 documents 但找不到获取任何错误消息或类似信息的方法。
我做了一些日志记录,令牌从请求中正确检索并传递给函数。此外,如果我从 AWS 日志中复制令牌并在本地 运行 我的代码,它可以正常工作。
我已经用 Nodejs 运行时间版本 8.10 和 10.x
试过了
关于如何解决这个问题或如何获取错误消息以了解正在发生的事情的任何想法?
所以折腾了一段时间后,我明白了问题所在。
在 AWS 上检索令牌时,我使用了以下代码:
const token = event.queryStringParameters.Authorization;
但出于某种原因,event.queryStringParameters.Authorization
还将在令牌的开头和结尾包含双引号。
所以我认为我正在将 TOKEN
传递给解码函数,而实际上我正在传递 "TOKEN"
。
我已经使用子字符串删除了多余的双引号...
const token = event.queryStringParameters.Authorization.substring(1, event.queryStringParameters.Authorization.length - 1);
...现在一切正常。
在这里回答,以防有人遇到同样的问题。
我正在构建一个 Lambda 授权方以与 API 网关 Web 套接字一起使用 api。
为了处理令牌,我正在使用 jsonwebtoken
并像这样解码令牌:
const jwt = require('jsonwebtoken');
const decodedJwt = jwt.decode(token, {complete: true});
当我 运行 在我的机器上本地运行时它工作正常,但是当它部署到 AWS 时它不工作。
jwt.decode 调用返回 null
并且没有抛出异常。此外,我查看了 documents 但找不到获取任何错误消息或类似信息的方法。
我做了一些日志记录,令牌从请求中正确检索并传递给函数。此外,如果我从 AWS 日志中复制令牌并在本地 运行 我的代码,它可以正常工作。
我已经用 Nodejs 运行时间版本 8.10 和 10.x
试过了关于如何解决这个问题或如何获取错误消息以了解正在发生的事情的任何想法?
所以折腾了一段时间后,我明白了问题所在。
在 AWS 上检索令牌时,我使用了以下代码:
const token = event.queryStringParameters.Authorization;
但出于某种原因,event.queryStringParameters.Authorization
还将在令牌的开头和结尾包含双引号。
所以我认为我正在将 TOKEN
传递给解码函数,而实际上我正在传递 "TOKEN"
。
我已经使用子字符串删除了多余的双引号...
const token = event.queryStringParameters.Authorization.substring(1, event.queryStringParameters.Authorization.length - 1);
...现在一切正常。
在这里回答,以防有人遇到同样的问题。