amazon-web-services - 带有 Cognito 正确方法的 AWS Lambda
问题描述
我想为客户提供一个简单的 API。客户在他的应用程序中使用我的 API 的输出。API 是一个非常简单的 API。我正在将无服务器框架部署到 AWS Lambda。通过 API 公开的功能不使用任何其他 AWS 服务(如 S3 等)。
我的问题是使用什么样的身份验证。我正在考虑尝试为此使用 cognito。
1. 问: 这有意义吗?或者对于这个简单的用例,甚至是一个更简单的选择?
2. 问: 所以我做对了。我将首先创建一个用户池。那么基于这个用户池创建一个身份池呢?
3. 问题: 最后,我的客户端从 cognito 获取访问令牌,并将其附加到请求中的标头。这使他可以通过 API Gateway 访问我的 REST API 并触发 lambda 函数。但是首先客户端如何创建用户池的“帐户”呢?我参与其中吗?
解决方案
对于这个用例,Cognito Authentication 听起来确实是一个不错的选择。您可以有如下流程:
Cognito User Pool Authentication -> Token passed as header to the API in API Gateway -> API returns JSON data after successful authentication
[一个]。
我想强调一个 Cognito 用户池足以满足这个用例。Cognito 用户池用于身份验证,而 Cognito 身份池用于授权。Cognito 身份池本质上会生成由 AWS STS 提供的临时 AWS 凭证。因此,我看不出您在哪里需要 Cognito 身份池。
要生成 JWT 令牌,您需要让用户执行成功的身份验证操作。要执行返回令牌的成功身份验证操作,您可以查看InitiateAuth
API 调用 [b]。
参考
[一个]。https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html
[乙]。https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html
推荐阅读
- javascript - Mozilla 扩展警报每 30 分钟一次
- google-apps-script - 尝试在 G Suite Marketplace 中重新发布 google 表格插件
- c# - 这个返回语句在做什么
- css - 如何设置用于重新排序可变数量的网格项目的模式?
- vue.js - 为什么在创建新的 eslint-plugin 后“vue-cli-service build”会失败,并出现错误“TypeError: eslint.CLIEngine is not a constructor”?
- c++ - 在将基类指针类型转换为派生类指针后从基类指针调用派生类函数
- spring - spring,使用 HikariCP VS c3p0,相同的代码,不同的结果
- facebook-instant-games - 加载资源失败:服务器在 Facebook Instant Game 上响应状态为 404
- binding - 在小部件销毁后在 TCL/TK 中删除绑定
- c++ - 设置可拖动线段的限制