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

时间:2019-04-03 13:19:34

标签: amazon-web-services jwt amazon-cognito

我想使用AWS Cognito(用户池和身份池)来管理对我的Web应用程序的访问。

此网络应用是报告生成器。它根据收集的传感器数据生成报告。

请求的数据的可能范围应因用户而异。某些用户只能访问指定区域或日期范围内的特定传感器ID或传感器。

但是,我想公开提供一些报告-例如。来自纽约的传感器的数据应该提供给所有人,而无需注册/登录。

对于经过身份验证的用户,我认为我可以向Cognito用户池添加一个自定义属性,其中包含指定用户应有权访问的传感器ID。 然后,在注册并使用Cognito登录后,用户可以向我的应用程序发出请求,然后我将验证JWT并从有效负载中获取有关用户可以请求哪些传感器的信息。

不幸的是,我不确定如何处理未经身份验证的用户。我看到这样的话:

  1. 用户导航到包含特定公开报告的页面。例如。 https://example.com/reports/new-york/
  2. 前端(React.js)以某种方式获得具有自定义属性custom:city = New York的签名JWT。
  3. Frontend向我的应用程序发出请求,如果请求仅包含针对纽约传感器的查询,我的应用程序将验证JWT并将数据允许给用户。

也许我应该创建一个具有已知用户名和密码的用户,并将其硬编码在前端?

使用Cognito是否合适?我应该以其他方式实现它吗?

1 个答案:

答案 0 :(得分:2)

是的,有一种使用cognito身份池实现未经身份验证的访问的简单方法。您将不会为此使用用户池。转到aws控制台中的身份池,然后单击“编辑身份池”。现在向下滚动到未认证的身份并启用它。 unauthenticated identities

为此身份池自动创建2个不同的角色。一个用于身份验证角色,另一个用于取消身份验证角色。相应地授予权限。现在,您可以使用cognito sdk进行未经身份验证的调用,如果您不提供凭据,则将获得未经身份验证角色的凭据。

相关问题