我想为客户提供一个简单的API。客户端在其应用程序中使用我的API的输出。该API非常简单。我正在将无服务器框架部署到AWS Lambda。通过API公开的功能不使用任何其他AWS服务(例如S3等)。
我的问题是要使用哪种身份验证。我当时想尝试使用Cognito。
1。问题: 这有意义吗?还是对于这个简单的用例甚至是一个更简单的选择?
2。问题: 所以我说对了。我将首先创建一个用户池。然后基于此用户池创建一个身份池?
3。问题: 最后,我的客户端从cognito获取访问令牌,并将其附加到请求中的标头。这样,他就可以通过API网关访问我的REST API,并触发lambda函数。但是客户端首先如何在用户池中创建一个“帐户”呢?我有参与吗?
答案 0 :(得分:1)
对于这种用例,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身份池实质上生成了临时的AWS凭证,由AWS STS出售。因此,我在这里看不到您需要Cognito身份池的地方。
要生成JWT令牌,您需要让用户执行成功的身份验证操作。要执行成功的返回令牌的身份验证操作,您可以查看InitiateAuth
API调用[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