如何为未经身份验证的用户使用AWS Cognito?

5
我希望使用AWS Cognito(用户池和身份池)来管理我的Web应用程序的访问权限。我的Web应用程序是一款报告生成器,它从传感器数据中收集数据并生成报告。不同的用户可以请求不同范围的数据,例如一些用户只能访问特定传感器ID、来自指定区域或日期范围内的传感器。但是,我希望某些报告对公众开放——例如,来自纽约的传感器数据应该对所有人都可见,无需注册/登录。 对于经过身份验证的用户,我认为我可以在Cognito用户池中添加一个自定义属性,用于存储指定用户应该访问的传感器ID。然后,用户可以通过Cognito进行注册和登录,在使用我的应用程序之前,我会验证JWT并从其负载中获取有关哪些传感器可以被用户请求的信息。 然而,我不确定如何处理未经身份验证的用户。我想象中的流程如下: 1. 用户浏览具有特定公共报告的页面。例如:https://example.com/reports/new-york/ 2. 前端(React.js)以某种方式获得带有自定义属性custom:city=New York的已签名JWT。 3. 前端向我的应用程序发出请求,我的应用程序验证JWT,并仅当请求仅包含对纽约传感器的查询时才将数据提供给用户。 也许我应该在前端中创建一个具有已知用户名和密码的用户,并将其硬编码进去? 这样使用Cognito是否合适?还有其他实现方式吗?
1个回答

9
是的,使用Cognito身份池实现无身份验证访问有一个简单的方法。您将不会使用用户池。前往AWS控制台中的身份池,然后单击编辑身份池。现在向下滚动到未经身份验证的身份,并启用它。 未经身份验证的身份 为此身份池自动创建了2个不同的角色。一个用于认证角色,另一个用于非认证角色。相应地授予权限。现在,您可以使用Cognito SDK进行未经身份验证的调用,如果您不提供凭据,则会为您提供非认证角色的凭据。

我知道未认证的身份,但那不是我正在寻找的东西。我允许自己提出一个更具体的问题:https://stackoverflow.com/questions/55515466/is-creating-a-new-user-in-amazon-cognito-and-sharing-his-credentials-publicly-a - Defozo
我更感兴趣的是关于如何处理访客的一般知识,当我想要将信息存储在Amazon Cognito中,以便他们可以从我的REST API访问什么内容,以保持我的应用程序DRY。 - Defozo
1
我看了你的另一个问题。使用DynamoDB来存储这些信息会比使用Cognito更好,因为Cognito用户池并不是为此而设计的。虽然它可能可以工作,但如果AWS突然决定改变其用户池行为,您很可能会在以后遇到其他问题。 - Ninad Gaikwad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接