使用Lambda,Cognito或IAM在AWS上进行用户身份验证(注册和登录)

DJS*_*nny 6 amazon-web-services amazon-dynamodb aws-lambda

我一直在寻求使用各种AWS服务来处理下一个主要项目的基础设施.我们开始在EC2实例上查看docker容器,但在更多地研究AWS Lambda之后 - 它似乎是一条值得探索的路径.

使用AWS Lambda范例,我们只需使用Lambda函数作为逻辑粘合剂来保存我们的数据和事件(来自其他AWS服务).

例如,如果我们产品的用户创建了新记录,则可以在该事件上触发AWS Lambda,我们可以调用lambda函数将该记录添加到AWS Cloudsearch,从而使我们的搜索保持最新.

在这种类型的范例中,对于用户管理,身份验证等,我有点不确定.我已经阅读了有关IAM和Cognito的一些文档,他们正在寻找一项AWS服务来卸载用户注册,登录,注销,忘记密码等.看起来这些服务实际上并不是这样.IAM是组织的身份管理(不是用户群),而Cognito更侧重于在许多设备或应用实例上同步身份信息(后验证).

我现在想知道我应该做的是编写注册,登录,忘记密码等代码作为lambda函数自己?或者是否有一些解决方案或一组解决方案在AWS堆栈中会划伤这个特定的痒?

Ale*_*N-o 10

您可以将自己的身份验证系统与Cognito一起使用,然后使用AMI进行授权,即使对于您的用户群也是如此.

  • 当认证用户(可能通过API网关称为lambda函数),您将获取或Cognito创建与用户相关联的身份ID使用GetOpenIdTokenForDeveloperIdentity.
  • 然后,您将拥有一个Cognito OpenId令牌,您可以将该令牌提供给经过身份验证的用户.
  • 用户可以使用此令牌获取与IAM角色关联的临时AWS凭证.因此,您可以为经过身份验证的用户授予对您的部分AWS资源的访问权限:GetCredentialsForIdentity.
  • 当用户使用这些凭据调用AWS资源时,您可以通过上下文访问其Cognito身份(使用Lambda,API GatewayS3的示例)
  • 最后,您可以在系统中找到与此Cognito标识关联的用户LookupDeveloperIdentity.

检查身份验证流程更多示例