使用 Lambda、Cognito 或 IAM 在 AWS 上进行用户身份验证(注册和登录)
User Authentication (Signup & Login) on AWS with Lambda, Cognito or IAM
我一直在寻求使用各种 AWS 服务来处理我们下一个主要项目的基础设施。我们开始研究 EC2 实例上的 docker 个容器,但在进一步研究 AWS Lambda 之后——这似乎是一条值得探索的途径。
使用 AWS Lambda 范例,我们只需使用 Lambda 函数作为逻辑粘合剂,将我们的数据和事件(来自其他 AWS 服务)保存在一起。
例如,如果我们产品的用户创建了一条新记录,则可以在该事件上触发 AWS Lambda,我们可以调用 lambda 函数将该记录添加到 AWS Cloudsearch,从而使我们的搜索保持最新。
在这种范例中涉及用户管理、身份验证等时,我有点不确定。我已经阅读了一些关于 IAM 和 Cognito 的文档,以寻找一种 AWS 服务来卸载用户注册、登录、注销、忘记密码等。看起来这并不是这些服务的实际用途。 IAM 是组织(而非用户群)的身份管理,而 Cognito 更侧重于跨多个设备或应用程序实例同步身份信息(post 身份验证)。
我目前想知道我是否应该自己编写注册、登录、忘记密码等代码作为 lambda 函数?或者 AWS 堆栈中是否有一些解决方案或一组解决方案可以解决这个问题?
您可以将 your own authentication system 与 Cognito 结合使用,然后使用 IAM 进行授权,甚至是针对您的用户群。
- 在对用户进行身份验证时(可能在通过 API 网关调用的 Lambda 函数中),您将 retrieve or create in Cognito an identity ID associated to the user 使用
GetOpenIdTokenForDeveloperIdentity
。
- 然后您将拥有一个 Cognito OpenId 令牌,您可以将其提供给经过身份验证的用户。
- 用户可以使用此令牌获得与 IAM 角色关联的 temporary AWS credentials。因此,您可以为经过身份验证的用户授予对某些 AWS 资源的访问权限:
GetCredentialsForIdentity
.
- 当用户使用这些凭证调用 AWS 资源时,您可以通过上下文访问他的 Cognito 身份(示例 Lambda, API Gateway or S3)
- 最后,您可以 find the user associated to this Cognito identity 在您的系统中使用
LookupDeveloperIdentity
。
我一直在寻求使用各种 AWS 服务来处理我们下一个主要项目的基础设施。我们开始研究 EC2 实例上的 docker 个容器,但在进一步研究 AWS Lambda 之后——这似乎是一条值得探索的途径。
使用 AWS Lambda 范例,我们只需使用 Lambda 函数作为逻辑粘合剂,将我们的数据和事件(来自其他 AWS 服务)保存在一起。
例如,如果我们产品的用户创建了一条新记录,则可以在该事件上触发 AWS Lambda,我们可以调用 lambda 函数将该记录添加到 AWS Cloudsearch,从而使我们的搜索保持最新。
在这种范例中涉及用户管理、身份验证等时,我有点不确定。我已经阅读了一些关于 IAM 和 Cognito 的文档,以寻找一种 AWS 服务来卸载用户注册、登录、注销、忘记密码等。看起来这并不是这些服务的实际用途。 IAM 是组织(而非用户群)的身份管理,而 Cognito 更侧重于跨多个设备或应用程序实例同步身份信息(post 身份验证)。
我目前想知道我是否应该自己编写注册、登录、忘记密码等代码作为 lambda 函数?或者 AWS 堆栈中是否有一些解决方案或一组解决方案可以解决这个问题?
您可以将 your own authentication system 与 Cognito 结合使用,然后使用 IAM 进行授权,甚至是针对您的用户群。
- 在对用户进行身份验证时(可能在通过 API 网关调用的 Lambda 函数中),您将 retrieve or create in Cognito an identity ID associated to the user 使用
GetOpenIdTokenForDeveloperIdentity
。 - 然后您将拥有一个 Cognito OpenId 令牌,您可以将其提供给经过身份验证的用户。
- 用户可以使用此令牌获得与 IAM 角色关联的 temporary AWS credentials。因此,您可以为经过身份验证的用户授予对某些 AWS 资源的访问权限:
GetCredentialsForIdentity
. - 当用户使用这些凭证调用 AWS 资源时,您可以通过上下文访问他的 Cognito 身份(示例 Lambda, API Gateway or S3)
- 最后,您可以 find the user associated to this Cognito identity 在您的系统中使用
LookupDeveloperIdentity
。