我希望使用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是否合适?还有其他实现方式吗?