我正在构建一个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中尝试过
关于如何解决此问题或如何获取错误消息以了解正在发生的事情的任何想法?
答案 0 :(得分:0)
因此,经过一段时间的努力,我意识到了问题所在。
在AWS上检索令牌时,我使用以下代码:
const token = event.queryStringParameters.Authorization;
但是出于某种原因,event.queryStringParameters.Authorization
还将在令牌的开头和结尾加上双引号。
所以我以为我实际上是在传递TOKEN
时将"TOKEN"
传递给了解码函数。
我已经使用子字符串删除了多余的双引号...
const token = event.queryStringParameters.Authorization.substring(1, event.queryStringParameters.Authorization.length - 1);
...现在可以正常工作了。
在此处回答该问题,以防有人遇到相同的问题。