首页 > 解决方案 > 允许临时访问 DynamoDB

问题描述

我有一个连接到 Elastic Beanstalk 服务器应用程序的客户端应用程序。我的一些用户需要注册。但是当注册表加载时,它需要从 DynamoDB 中获取一些数据,以便用户可以在几个选项之间进行选择。

问题是我设置我的服务器的方式是,对服务器的任何未经身份验证的请求(客户端应用程序以前从 Cognito 获得的没有身份验证令牌)都会被拒绝。当然,如果一个人要注册,他们没有经过身份验证,这意味着他们无法从 DynamoDB 访问他们需要注册的信息。这只是我需要的几条信息,所以非常令人沮丧。

我想过如何解决这个问题:

  1. 当仅对我需要的几条信息发出请求时,将一长串字符放入发送到服务器的客户端应用程序中。服务器还将相同的字符串存储在某处,然后将它们进行比较。如果它们匹配,则返回请求的信息。正如我所说,这只会针对我需要的两条信息进行,其他一切仍然是安全的。

  2. 在我的 API 中将两条路由公开,这些路由会导致我需要的信息(我知道,这是个坏主意)。

解决此问题的最佳方法是什么?

标签: amazon-web-servicesamazon-dynamodbamazon-cognito

解决方案


假设您使用的是 cognito,还有一个匿名访客用户的概念,它可以分配自己的角色。

您可以将匿名访客用户视为普通的 cognito 用户(可以为其分配角色),但是您可以将其权限范围缩小到执行这些操作所需的最低限度。

或者使用选项 2,API 可以调用 Lambda,该 Lambda 将返回必要的信息,只需读取数据即可。您可能还想查看缓存结果,以避免 API 网关端点被滥用。


推荐阅读