对认知的使用/需求感到困惑
Confused on use/ need of cognito
因此,由于 parse 正在关闭,我们正在将我们一直在开发的网站/移动应用程序转移到 AWS。我们将主要使用以下服务:
SNS、SES、Dynamo、S3、Lambda。
现在我仍然有点困惑:
cognito 有什么用?我们真的需要 Cognito 来验证用户身份并使用 DynamoDB、S3、SNS 吗?或者我们可以只为这些服务中的每一个使用特定的 API 并直接连接(使用 Js SDK)吗?
如果我们必须使用 Cognito,我们如何保存本地数据,即登录用户/身份?这是 Cognito 同步的用途还是我们必须使用 cookie?
总而言之,当我可以使用 JavaScript SDK 直接连接到 DynamoDB 时,为什么还需要 Cognito?!
在此先感谢您。
Amazon Cognito
可以分解为两个子服务:Amazon Cognito Identity
和Amazon Cognito Sync
。
将前者视为身份验证服务和凭据提供程序。后者只是一种存储用户数据并在多个设备之间保持同步的服务。
Amazon Cognito Identity 的用途是什么?
假设您在 DynamoDB 中有一个 table。假设您有一个 Web 应用程序,它将在 table.
上存储一个项目
您可以在 IAM 中创建一个用户,将凭证信息嵌入到 Web 应用程序中,然后使用 AWS SDK 将项目放在 table 上。
这里发生了三件事:
- 凭据嵌入在应用程序中
- 凭据不会过期。
- 您应用程序中的每个用户对您的 table
具有相同的访问权限
这对于某些应用程序可能没问题,但 Amazon Cognito Identity
为这些常见问题提供了解决方案。
让我解释一下 Cognito Identity 的工作流程:
- 用户在您的应用程序上注册了一个帐户,将所有信息(用户名、密码、其他数据...)发送到您的服务器。
- 服务器将用户存储在某个后端数据库中(可能是 DynamoDB table)并在 Cognito 服务上创建新身份。然后将此身份映射到此用户。
- 用户现在可以登录您的应用程序。用户登录并将用户名和密码发送到您的服务器。 (此过程可以在帐户注册后自动完成)
- 服务器根据您的后端数据库检查用户名和密码。如果一切正常,则服务器会向 Amazon Cognito 请求临时访问令牌。
- Web 应用程序接收令牌并向 Amazon Cognito 发出请求(使用该访问令牌)以获取用户凭证。这些凭证基本上是专门为此用户创建的临时 IAM 用户。它会过期(通常是一个小时)。
- Web 应用程序使用这些凭据在 AWS 上进行操作,例如将项目放入 DynamoDB table,或调用 Lambda。
- 凭据过期后,用户必须重新登录应用程序。这可能会自动完成,也可能不会自动完成,具体取决于您的应用程序的要求。
在 Amazon Cognito 控制面板上,您可以为您的“身份”(Cognito 中的用户)配置角色和策略。这样你就可以指定它可以访问哪些服务。它甚至允许您为您的用户创建访问角色(管理员用户可能能够访问一些普通用户不应该访问的服务)。
我还应该注意,Amazon Cognito 可以轻松调整以支持 Facebook / Google+ / Amazon 帐户,这些帐户将映射到相同的身份,因此用户可以通过多个来源登录。
Amazon Cognito Sync 的用途是什么?
将其视为 DynamoDB table,您可以在其中存储特定用户的信息。这些信息在多个设备之间共享,并且 始终同步 。这意味着当 Web 应用程序更新用户值时,移动应用程序将自动反映此更改。
你可以存储多少用户数据是有限制的(我现在不记得了),所以你不会用它来保存信息(比如一个用户密码),而是 共享 信息的一种手段。
因此,由于 parse 正在关闭,我们正在将我们一直在开发的网站/移动应用程序转移到 AWS。我们将主要使用以下服务: SNS、SES、Dynamo、S3、Lambda。 现在我仍然有点困惑:
cognito 有什么用?我们真的需要 Cognito 来验证用户身份并使用 DynamoDB、S3、SNS 吗?或者我们可以只为这些服务中的每一个使用特定的 API 并直接连接(使用 Js SDK)吗?
如果我们必须使用 Cognito,我们如何保存本地数据,即登录用户/身份?这是 Cognito 同步的用途还是我们必须使用 cookie?
总而言之,当我可以使用 JavaScript SDK 直接连接到 DynamoDB 时,为什么还需要 Cognito?! 在此先感谢您。
Amazon Cognito
可以分解为两个子服务:Amazon Cognito Identity
和Amazon Cognito Sync
。
将前者视为身份验证服务和凭据提供程序。后者只是一种存储用户数据并在多个设备之间保持同步的服务。
Amazon Cognito Identity 的用途是什么?
假设您在 DynamoDB 中有一个 table。假设您有一个 Web 应用程序,它将在 table.
上存储一个项目您可以在 IAM 中创建一个用户,将凭证信息嵌入到 Web 应用程序中,然后使用 AWS SDK 将项目放在 table 上。
这里发生了三件事:
- 凭据嵌入在应用程序中
- 凭据不会过期。
- 您应用程序中的每个用户对您的 table 具有相同的访问权限
这对于某些应用程序可能没问题,但 Amazon Cognito Identity
为这些常见问题提供了解决方案。
让我解释一下 Cognito Identity 的工作流程:
- 用户在您的应用程序上注册了一个帐户,将所有信息(用户名、密码、其他数据...)发送到您的服务器。
- 服务器将用户存储在某个后端数据库中(可能是 DynamoDB table)并在 Cognito 服务上创建新身份。然后将此身份映射到此用户。
- 用户现在可以登录您的应用程序。用户登录并将用户名和密码发送到您的服务器。 (此过程可以在帐户注册后自动完成)
- 服务器根据您的后端数据库检查用户名和密码。如果一切正常,则服务器会向 Amazon Cognito 请求临时访问令牌。
- Web 应用程序接收令牌并向 Amazon Cognito 发出请求(使用该访问令牌)以获取用户凭证。这些凭证基本上是专门为此用户创建的临时 IAM 用户。它会过期(通常是一个小时)。
- Web 应用程序使用这些凭据在 AWS 上进行操作,例如将项目放入 DynamoDB table,或调用 Lambda。
- 凭据过期后,用户必须重新登录应用程序。这可能会自动完成,也可能不会自动完成,具体取决于您的应用程序的要求。
在 Amazon Cognito 控制面板上,您可以为您的“身份”(Cognito 中的用户)配置角色和策略。这样你就可以指定它可以访问哪些服务。它甚至允许您为您的用户创建访问角色(管理员用户可能能够访问一些普通用户不应该访问的服务)。
我还应该注意,Amazon Cognito 可以轻松调整以支持 Facebook / Google+ / Amazon 帐户,这些帐户将映射到相同的身份,因此用户可以通过多个来源登录。
Amazon Cognito Sync 的用途是什么?
将其视为 DynamoDB table,您可以在其中存储特定用户的信息。这些信息在多个设备之间共享,并且 始终同步 。这意味着当 Web 应用程序更新用户值时,移动应用程序将自动反映此更改。
你可以存储多少用户数据是有限制的(我现在不记得了),所以你不会用它来保存信息(比如一个用户密码),而是 共享 信息的一种手段。