amazon-web-services - 如何使用 Amazon Cognito Identity Js 在 Aws Cognito 中实施 RBAC
问题描述
我如何在 Aws Cognito 中为 AWS Api 网关实施 RBAC。
这是我在 AWS Api Gateway 中的示例授权
这个例子我的 lambda 函数用 nodejs 与 aws cognito 连接。
var mysql = require("mysql");
const uuidv4 = require("uuid/v4");
exports.endSession = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
const updateSession = () =>
new Promise((resolve, reject) => {
pool.query(
`UPDATE sessions SET end_time = CURRENT_TIMESTAMP() WHERE sessions.uuid = '${
event.uuid
}'`,
(err, res, field) => {
if (err) {
reject(err);
}
resolve(res);
}
);
});
updateSession()
.then(() => {
const resp = {
status: "success",
data: {
message: "Successfully end session"
}
};
callback(null, resp);
})
.catch(err => {
callback(null, err);
});
};
解决方案
一种方法是在 Api Gateway 上应用自定义授权功能,在与您的数据库验证后过滤掉不必要的流量。
这就是自定义授权人功能的工作方式
- 用户尝试访问 api
- api网关拦截用户请求
- 这里 CustomAuthorizer 功能发挥作用,您可以验证 JWT 令牌,验证他的角色等任何您想为该用户应用的自定义逻辑。
以下是自定义授权者的链接 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html
推荐阅读
- java - 来自反应式 AMQP 后台线程的 Spring Boot JPA 交互
- python-2.7 - Pass a jsonl file into a python script via windows command line
- typescript - Customize Monocle policy regarding missing interposed nodes?
- python - Python数据框groupby,然后根据组中的值计算位置
- .net - 安装 Microsoft.dotnet-httprepl 失败
- java - 我的表中有一个复合外键,如何在休眠中定义映射?
- django - 启动时Django站点匹配查询错误
- arrays - 如何将这段代码从 Oracle 移动到 Postgres #2
- php - PHP在2个表之间交换元素
- php - 我有一项服务需要使用 php 在 html 页面中使用并转换为 json 格式