Amazon web services 对cognito的使用/需要感到困惑

Amazon web services 对cognito的使用/需要感到困惑,amazon-web-services,web-services,amazon-dynamodb,amazon-cognito,Amazon Web Services,Web Services,Amazon Dynamodb,Amazon Cognito,因此,由于parse关闭,我们正在将我们一直在开发的网站/移动应用程序移动到AWS。我们主要将使用以下服务: SNS、SES、Dynamo、S3、Lambda。 现在我还是有点困惑: 干邑酒是用来干什么的?我们真的需要Cognoto来验证用户并使用DynamoDB、S3和SNS吗?或者我们可以为这些服务中的每一个使用特定的API并直接连接(使用JSSDK) 如果我们必须使用cognito,我们如何保存本地数据,即登录用户/身份?这就是cognito sync的用途还是我们必须使用Cookie 总

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

  • 干邑酒是用来干什么的?我们真的需要Cognoto来验证用户并使用DynamoDB、S3和SNS吗?或者我们可以为这些服务中的每一个使用特定的API并直接连接(使用JSSDK)

  • 如果我们必须使用cognito,我们如何保存本地数据,即登录用户/身份?这就是cognito sync的用途还是我们必须使用Cookie

  • 总之,当我可以使用JavaScript SDK直接连接到DynamoDB时,为什么我需要cognito?!
    提前感谢。

    amazoncognito
    可以分解为两个子服务:
    amazoncognito-Identity
    amazoncognito-Sync

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

    亚马逊Cognito身份的目的是什么? 假设您在DynamoDB中有一个表。假设您有一个web应用程序,它将在该表上存储一个项目

    您可以在IAM中创建一个用户,将凭据信息嵌入web应用程序,然后使用AWS SDK将该项放到表中

    这里有三件事:

    • 凭据嵌入到应用程序中
    • 凭据不会过期
    • 应用程序中的每个用户对表都具有相同的访问权限
    对于某些应用程序来说,这可能很好,但是
    amazoncognito-Identity
    为这些常见问题提供了解决方案

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

  • 用户在应用程序上注册帐户,并将所有信息(用户名、密码、其他数据…)发送到服务器
  • 服务器将用户存储在某个后端数据库(可能是DynamoDB表)中,并在Cognito服务上创建一个新标识。然后将此标识映射到此用户
  • 用户现在可以登录到您的应用程序。用户登录并向服务器发送用户名和密码。(此过程可在帐户注册后自动完成)
  • 服务器根据后端数据库检查用户名和密码。如果一切正常,那么服务器向AmazonCognito请求临时访问令牌
  • web应用程序接收令牌并向Amazon Cognito发出请求(使用该访问令牌)以获取用户凭据。这些凭据基本上是专门为此用户创建的临时IAM用户。它将有一个过期时间(通常是一个小时)
  • web应用程序使用这些凭据在AWS上进行操作,例如将项目放在DynamoDB表上,或调用Lambda
  • 当凭据过期时,用户必须重新登录到应用程序。这可能是自动完成的,也可能不是,这取决于应用程序的要求
  • 在AmazonCognito仪表板上,您可以为您的“身份”(Cognito中的用户)配置角色和策略。通过这种方式,您可以指定它可以访问哪些服务。它甚至允许您为您的用户创建访问角色(管理员用户可以访问一些普通用户不应该访问的服务)

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

    亚马逊Cognito同步的目的是什么? 将其视为DynamoDB表,在其中存储特定用户的信息。这些信息在多个设备之间共享,始终同步。这意味着当web应用程序更新用户值时,移动应用程序将自动反映此更改


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

    谢谢Matias,这非常有用!