首页 > 解决方案 > 带有 Cognito 正确方法的 AWS Lambda

问题描述

我想为客户提供一个简单的 API。客户在他的应用程序中使用我的 API 的输出。API 是一个非常简单的 API。我正在将无服务器框架部署到 AWS Lambda。通过 API 公开的功能不使用任何其他 AWS 服务(如 S3 等)。

我的问题是使用什么样的身份验证。我正在考虑尝试为此使用 cognito。

1. 问: 这有意义吗?或者对于这个简单的用例,甚至是一个更简单的选择?

2. 问: 所以我做对了。我将首先创建一个用户池。那么基于这个用户池创建一个身份池呢?

3. 问题: 最后,我的客户端从 cognito 获取访问令牌,并将其附加到请求中的标头。这使他可以通过 API Gateway 访问我的 REST API 并触发 lambda 函数。但是首先客户端如何创建用户池的“帐户”呢?我参与其中吗?

标签: amazon-web-servicesamazon-cognitoserverless-framework

解决方案


对于这个用例,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 令牌,您需要让用户执行成功的身份验证操作。要执行返回令牌的成功身份验证操作,您可以查看InitiateAuthAPI 调用 [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


推荐阅读