带有无服务器框架的 AWS cognito

Posted

技术标签:

【中文标题】带有无服务器框架的 AWS cognito【英文标题】:AWS cognito with serverless framework 【发布时间】:2018-09-13 14:35:48 【问题描述】:

我正在研究无服务器框架。对于用户身份验证,我使用的是 aws cognito,我想使用 lambda 函数为注册用户创建 api、验证用户、更改密码等。是否可以使用无服务器框架。

如果可能,请提出任何示例。

【问题讨论】:

docs.aws.amazon.com/cognito/latest/developerguide/… 请注意,Cognito 非常适合简单的应用程序,但有一些严重的限制,上次我检查您无法通过用户池中的自定义属性进行搜索。通常,大多数人会编写自己的注册/登录逻辑并发布 jwt 令牌。可以在此处找到自定义授权者的示例github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/… 【参考方案1】:

我创造了它。你可以在这里找到它: https://github.com/awslabs/cognito-proxy-rest-service

顺便说一句,要问自己的问题是,当 Cognito 拥有您在前端使用它所需的一切时,为什么您需要将身份验证逻辑下推到后端?

【讨论】:

通过使用 aws cognito,如果我将身份验证逻辑写入前端,我必须完全依赖 aws,如果将来我想更改我的身份验证逻辑,那么我必须再次修改我的前端部分 你在 kotlin 中创建了 lambda fun。你在 nodejs 中也有同样的东西吗? 不,只是 Kotlin。【参考方案2】:

是的,这是可能的。要实现这一点,基本上您需要在自己的 Lambda 函数中包装 Cognito API,然后在无服务器框架模板中为它们配置 http event。

【讨论】:

【参考方案3】:

您应该认为 Cognito 是用于身份验证的后端即服务 (BaaS),并且它公开了使用它的 API。因此,您可以使用 AWS 开发工具包来访问这些 API。但是,您可以使用 Serverless Framework Toolkit 编写自己的 Lambda 函数(无服务器应用程序)来访问 Cognito。您可以找到有关使用 javascript SDK here 在移动或 Web 应用程序中集成 Cognito 的更多信息。此外,您还可以通过here 找到有关其他语言的 AWS SDK 的更多信息。

【讨论】:

以上是关于带有无服务器框架的 AWS cognito的主要内容,如果未能解决你的问题,请参考以下文章

通过 AWS Lambda 和 Cognito 注册用户(无服务器架构)

带有 ADFS 的 AWS Cognito:颁发者与 providerName 不匹配

Cognito 用户池作为具有客户端凭据的身份提供者仅在保存到 aws 控制台后才有效

AWS + Serverless - 如何获取 cognito 用户池生成的密钥

AWS API Gateway Cognito 授权模拟

带有 SMS MFA 的无密码 Cognito