node.js - AWS Serverless:令牌认证
问题描述
我正在开发一个项目,该项目使用在 NodeJS 中编码的 aws lambdas 作为后端。它在 AWS 中以无服务器模式托管。我使用 cognito 作为身份验证 API,我可以成功地从中获取令牌。为了保护我的后端(NodeJS),我添加了以下代码来读取授权标头并使用 cognito-express 验证令牌。
const authorisedRoute = express.Router();
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
res.header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
if (req.method !== 'OPTIONS') {
let accessTokenFromClient = req.headers['Authorization'];
if (!accessTokenFromClient) return res.status(401).send("Access Token missing from header");
cognitoExpress.validate(accessTokenFromClient, function (err, response) {
if (err) return res.status(401).send(err);
else next();
});
}
});
预期行为: 从“授权”标头中读取令牌并使用 cognito-express 进行验证,然后将数据发送回客户端。如果未经验证,我会得到:缺少身份验证令牌。
实际行为: 在本地运行 lambda 时,代码和此机制工作正常(放大调用函数 ...)。但是当我将它部署到云端时,整个功能停止工作,我得到“内部处理错误”作为响应。
云中不允许这种方法吗?有没有更好的方法来使用令牌身份验证来保护我的无服务器 API?谢谢您阅读此篇 :)
解决方案
推荐阅读
- django - 我有一个关于 django 模型的问题。我在 Visual Studio 代码中创建了一个 django 模型。当我输入 charfield 时,它建议我下面的代码
- python - 使用字符串和 int 对列表进行排序。仅排序 int Python
- python - 如何在 Python 中对以下代码进行矢量化而不加入两个数据帧
- python-3.x - jinja2 使用双引号
- python - 如何在 opencv 4.4.0 版上正确使用 cv2.findContours()?
- javascript - 单个头文件中当前页面的活动导航菜单突出显示
- flutter - Flutter Apple 登录包未返回所需的凭据
- c - 在 C 中模糊图像:代码只有一半有效
- javascript - 我做了一个函数,我要导出它的值 JS
- python - Pandas 样式格式未将列格式化为带小数位的百分比