用户可以登录到他们的仪表板。当他们登录时,前端会从与用户对应的 S3 存储桶中提取数据,例如 bucket/data/user5/data.json。然后,这些数据会在前端呈现为报告。
如何确保用户只能看到自己的数据而看不到其他人的数据?我正在使用 AWS Cognito 和 React。
额外的信息:
为了允许用户登录,我有一个异步函数,它通过向预定义端点发出 POST 请求来将给定的代码交换为令牌。如果响应成功,它会将令牌和用户的电子邮件存储在中localStorage
。我还有另一个异步函数,它通过向另一个端点发出 POST 请求来验证给定令牌的有效性。它返回一个布尔值,指示令牌是否有效。如果验证失败,它会打印错误并返回false
。所有这些的服务器/后端是一个 Flask Web 应用程序,它与 OAuth2 服务集成以交换授权码以获取令牌并验证这些令牌。它加载客户端机密,这是一个环境变量。它有一个端点接受带有授权码的 POST 请求并使用 OAuth2 令牌端点将其交换为令牌,然后另一个端点检查提供的访问令牌的有效性。它从 Cognito 检索 JWKS,使用令牌标头中的密钥 ID 找到正确的公钥,然后使用库python-jose
解码并验证从 Cognito 获取的 JWT,检查客户端 ID,并在响应上放置 CSP 标头。