AWS Lambda with Cognito right approach



我想让客户端可以使用一个简单的API。客户端在他的应用程序中使用我的 API 的输出。该 API 非常简单。我正在使用无服务器框架部署到 AWS Lambda。通过 API 公开的函数不使用任何其他 AWS 服务(如 S3 等)。

我的问题是使用哪种身份验证。我想尝试为此使用认知。

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

2. 问题:所以我说得对。我将首先创建一个用户池。然后基于此用户池创建身份池?

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

对于这个用例来说,Cognito 身份验证听起来确实是一个不错的选择。您可以按如下方式进行流:

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 凭证,这些凭证由 AWS STS 提供。 因此,我看不到您在哪里需要 Cognito 身份池。

若要生成 JWT 令牌,需要让用户执行成功的身份验证操作。要执行返回令牌的成功身份验证操作,您可以查看InitiateAuthAPI 调用 [b]。

引用

[a]. https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html

[b]. https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html

最新更新