AWS Cognito 和 AWS API Gateway 中的用户管理和基于令牌的身份验证
Posted
技术标签:
【中文标题】AWS Cognito 和 AWS API Gateway 中的用户管理和基于令牌的身份验证【英文标题】:User Management and Token based authentication in AWS Cognito and AWS API Gateway 【发布时间】:2022-01-15 20:11:17 【问题描述】:我正在运行一个基于 FastAPI 的简单 Rest API。此 API 在 AWS Lambda 容器中运行。我已将 API Gateway 添加为触发器。
现在我想保护这个 API。
我的期望:
我手动创建了用户和密码 用户可以使用其用户名和密码调用特定端点以接收访问令牌 使用此访问令牌,用户应该能够访问 API,例如通过传递不记名令牌。实际上我已经尝试过 AWS Cognito,但接收访问令牌的唯一方法是使用 CLIENT_ID 和 CLIENT_SECRET。而且我不想将此分享给 API 的外部用户。
我认为这个 CLIENT_ID 和 CLIENT_SECRET 是为网络应用程序或某事制作的。像那样,但这不是我想要的。我只需要一个简单的管道:用户创建 -> 用户登录 -> Access_token -> API。
我希望你们中的任何人都能够分享指南或类似的东西。也许 AWS Cognito 不适合这样的用例,如果您这么认为,请告诉我原因。
提前致谢。
【问题讨论】:
【参考方案1】:是的,绝对有可能,请参考下图。
-
在第一步中,您的应用用户通过用户池登录并
成功验证后接收用户池令牌。
接下来,您的应用程序将用户池令牌交换为 AWS 凭证
通过身份池。
最后,您的应用程序用户可以使用这些 AWS 凭证访问
其他 AWS 服务,例如 Amazon S3 或 DynamoDB。
稍后您需要 API-Gateway (lambda) 中的一些自定义授权方来验证令牌。
【讨论】:
以上是关于AWS Cognito 和 AWS API Gateway 中的用户管理和基于令牌的身份验证的主要内容,如果未能解决你的问题,请参考以下文章
使用 Lambda 授权方的 AWS Cognito 和 API 网关
具有 Cognito 用户池授权方的 AWS SAM API
AWS API Gateway + Cognito 用户池授权方 + Lambda - 我需要设置哪些 HTTP 标头和权限?