首页 > 解决方案 > 如何使用 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);
    });
};

标签: amazon-web-servicesaws-lambdaamazon-cognito

解决方案


一种方法是在 Api Gateway 上应用自定义授权功能,在与您的数据库验证后过滤掉不必要的流量。

这就是自定义授权人功能的工作方式

  1. 用户尝试访问 api
  2. api网关拦截用户请求
  3. 这里 CustomAuthorizer 功能发挥作用,您可以验证 JWT 令牌,验证他的角色等任何您想为该用户应用的自定义逻辑。

以下是自定义授权者的链接 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html


推荐阅读