如何知道哪个认知用户正在触发 lambda 函数?



有没有办法确定 Cognito 用户池中的哪个用户正在通过 API 网关触发 lambda 函数?我正在制作一个简单的 Web 应用程序,其中包含在 lambda 上运行的 python 后端。我需要知道触发该功能的 Cognito 用户的"子 UUID",以便向他们显示我的 DynamoDB 数据库中的相应信息。有没有办法知道谁在登录 Cognito 时触发了该功能?

您可以使用 JWT 令牌在其中存储有关特定用户的信息。这是执行此操作的一种方法:

  1. 创建 Cognito 用户时,将其子 UUID 保存在 DynamoDB 表中,并将 UUID 设置为主键
  2. 当用户首次登录时,请使用 Cognito API 对其进行身份验证。如果成功,那么您可以看到Cognito拥有的有关他们的数据,包括他们的UUID
  3. 将此 UUID 保存在 JWT 令牌中(如果您使用的是 python,则可以使用 pyjwt 库来执行此操作(
  4. 为包含 JWT 的用户设置仅限 HTTP 的 cookie
  5. 现在,每当用户向您的 API 网关发出请求并且他们已经过身份验证时,您都可以在 Lambda 函数中提取与请求一起发送的 cookie
  6. 验证 JWT 以确保它是真实的并且未被篡改
  7. 从 JWT 中提取 UUID 属性
  8. 使用 UUID 查询特定用户的 DynamoDB 表,然后向他们显示相应的信息

这只是执行此操作的一种方式。您还可以使用会话或在浏览器的 localStorage 中存储 JWT(尽管您应该考虑这样做的安全风险(。

最新更新