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

Def*_*ozo 3 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=签署了 JWT New York
  3. 前端向我的应用程序发出请求,如果请求仅包含对纽约传感器的查询,我的应用程序会验证 JWT 并允许将数据发送给用户。

也许我应该创建一个用户名和密码已知的用户并在前端对其进行硬编码?

这是使用 Cognito 的正确方法吗?我应该以其他方式实现它吗?

Nin*_*wad 5

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

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