困惑使用/需要认知

时间:2016-03-23 00:02:41

标签: amazon-web-services web-services amazon-dynamodb amazon-cognito

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

  1. 是什么认知用于?我们真的需要cognito来验证用户并使用DynamoDB,S3,SNS吗?或者我们可以为每个服务使用特定的API并直接连接(使用Js SDK)吗?

  2. 如果我们必须使用cognito,我们如何保存本地数据,即记录在用户/身份?是什么认知同步是为了什么或我们必须使用cookie?

  3. 总结一下,当我可以使用JavaScript SDK直接连接DynamoDB时,为什么需要cognito? 先谢谢你。

1 个答案:

答案 0 :(得分:7)

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

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

Amazon Cognito Identity的目的是什么?

假设您在DynamoDB中有一个表。我们假设您有一个将该项存储在该表上的Web应用程序。

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

这里有三件事:

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

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

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

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

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

    Amazon Cognito Sync的目的是什么?

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

    您可以存储的用户数据数量有限制(我现在不记得),因此您不会使用持久信息(例如用户密码),而不是分享信息的意思。