对认知的使用/需求感到困惑

Confused on use/ need of cognito

因此,由于 parse 正在关闭,我们正在将我们一直在开发的网站/移动应用程序转移到 AWS。我们将主要使用以下服务: SNS、SES、Dynamo、S3、Lambda。 现在我仍然有点困惑:

  1. cognito 有什么用?我们真的需要 Cognito 来验证用户身份并使用 DynamoDB、S3、SNS 吗?或者我们可以只为这些服务中的每一个使用特定的 API 并直接连接(使用 Js SDK)吗?

  2. 如果我们必须使用 Cognito,我们如何保存本地数据,即登录用户/身份?这是 Cognito 同步的用途还是我们必须使用 cookie?

总而言之,当我可以使用 JavaScript SDK 直接连接到 DynamoDB 时,为什么还需要 Cognito?! 在此先感谢您。

Amazon Cognito可以分解为两个子服务:Amazon Cognito IdentityAmazon Cognito Sync

将前者视为身份验证服务和凭据提供程序。后者只是一种存储用户数据并在多个设备之间保持同步的服务。

Amazon Cognito Identity 的用途是什么?

假设您在 DynamoDB 中有一个 table。假设您有一个 Web 应用程序,它将在 table.

上存储一个项目

您可以在 IAM 中创建一个用户,将凭证信息嵌入到 Web 应用程序中,然后使用 AWS SDK 将项目放在 table 上。

这里发生了三件事:

  • 凭据嵌入在应用程序中
  • 凭据不会过期。
  • 您应用程序中的每个用户对您的 table
  • 具有相同的访问权限

这对于某些应用程序可能没问题,但 Amazon Cognito Identity 为这些常见问题提供了解决方案。

让我解释一下 Cognito Identity 的工作流程:

  1. 用户在您的应用程序上注册了一个帐户,将所有信息(用户名、密码、其他数据...)发送到您的服务器。
  2. 服务器将用户存储在某个后端数据库中(可能是 DynamoDB table)并在 Cognito 服务上创建新身份。然后将此身份映射到此用户。
  3. 用户现在可以登录您的应用程序。用户登录并将用户名和密码发送到您的服务器。 (此过程可以在帐户注册后自动完成
  4. 服务器根据您的后端数据库检查用户名和密码。如果一切正常,则服务器会向 Amazon Cognito 请求临时访问令牌。
  5. Web 应用程序接收令牌并向 Amazon Cognito 发出请求(使用该访问令牌)以获取用户凭证。这些凭证基本上是专门为此用户创建的临时 IAM 用户。它会过期(通常是一个小时)。
  6. Web 应用程序使用这些凭据在 AWS 上进行操作,例如将项目放入 DynamoDB table,或调用 Lambda。
  7. 凭据过期后,用户必须重新登录应用程序。这可能会自动完成,也可能不会自动完成,具体取决于您的应用程序的要求。

在 Amazon Cognito 控制面板上,您可以为您的“身份”(Cognito 中的用户)配置角色和策略。这样你就可以指定它可以访问哪些服务。它甚至允许您为您的用户创建访问角色(管理员用户可能能够访问一些普通用户不应该访问的服务)。

我还应该注意,Amazon Cognito 可以轻松调整以支持 Facebook / Google+ / Amazon 帐户,这些帐户将映射到相同的身份,因此用户可以通过多个来源登录。

Amazon Cognito Sync 的用途是什么?

将其视为 DynamoDB table,您可以在其中存储特定用户的信息。这些信息在多个设备之间共享,并且 始终同步 。这意味着当 Web 应用程序更新用户值时,移动应用程序将自动反映此更改。

你可以存储多少用户数据是有限制的(我现在不记得了),所以你不会用它来保存信息(比如一个用户密码),而是 共享 信息的一种手段。