要在AWS Lambda函数中使用Cognito进行默认访问控制,可以按照以下步骤进行操作:
aws-sdk
,jsonwebtoken
和jwk-to-pem
这三个模块。const AWS = require('aws-sdk');
const jwt = require('jsonwebtoken');
const jwkToPem = require('jwk-to-pem');
const verifyToken = async (token) => {
const cognitoIssuer = `https://cognito-idp.${process.env.REGION}.amazonaws.com/${process.env.USER_POOL_ID}`;
const keysUrl = `${cognitoIssuer}/.well-known/jwks.json`;
const response = await new AWS.HttpClient().handleRequest({
method: 'GET',
url: keysUrl,
headers: {
'Content-Type': 'application/json',
},
});
const keys = JSON.parse(response.body).keys;
const key = keys.find((k) => k.kid === decodedToken.header.kid);
const pem = jwkToPem(key);
jwt.verify(token, pem, (error) => {
if (error) {
throw new Error('Invalid token');
}
});
};
exports.handler = async (event) => {
const token = event.headers.Authorization;
try {
await verifyToken(token);
// 令牌验证成功,继续执行其他逻辑
} catch (error) {
console.error(error);
return {
statusCode: 401,
body: 'Unauthorized',
};
}
};
请注意,上述代码仅用于示例目的。您需要根据自己的应用程序和Cognito用户池的配置进行适当的修改。
上一篇:AWS Lambda : OpenBLAS 警告 - 无法确定此系统的 L2 缓存大小,假设为 256k - 在使用 Google 自定义搜索 API 时。
下一篇:AWS LAMBDA api gateway错误 “Malformed Lambda proxy response” 状态错误 502