困惑使用/需要认知

Tan*_*man 4 web-services amazon-web-services amazon-dynamodb amazon-cognito

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

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

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

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

Mat*_*ero 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. 凭据到期后,用户必须重新登录应用程序.这可能是自动完成,也可能不是,具体取决于您的应用程序的要求.

在Amazon Cognito仪表板上,您可以为" 身份 "(Cognito中的用户)配置角色和策略.这样,您可以指定它可以访问的服务.它甚至允许您为用户创建访问角色(管理员用户可能能够访问普通用户不应该访问的某些服务).

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

Amazon Cognito Sync的目的是什么?

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

这里是多少,你可以存储用户数据(我不记得现在)的限制,所以它不是你会使用持久信息(如用户密码),而是一个平均值来共享信息.