我正在审查使用微服务与 API 网关相结合重新开发 Node.js Restful 整体应用程序的几种方法。在考虑使用 aws api 网关时,尽管似乎有一些项目我无法找到大量文档。其一,我正在设计的应用程序必须能够支持 SSO,我希望用户能够通过创建本地登录或使用他们当前的 facebook、twitter 等社交帐户进行注册。
aws api 网关将如何处理此过程,特别是因为我需要使用自定义数据库进行写入和读取,更不用说授权用户了?
此外,例如,假设我的微服务具有以下有界上下文:
帐户(登录、注册、个人资料管理),
计费(由于运行时间的原因可能不适合无服务器,可以选择 docker + ec2),
好友(建立好友协会),
文件(用户可以将图片和视频上传到他们的时间线 - 似乎是另一个 docker + ec2 候选者);
并且我想使用 API 网关来保护除特定于登录和注册的微服务端点之外的所有微服务端点,应该如何完成?
Node.js 包含一个包,似乎可以通过 facebook、twitter、local 等处理 jwt 和身份验证用户,称为“passport”,我可以将其与 api 网关身份验证一起使用吗?
此外,如果 api 网关保护微服务,那么对于发出的各种请求,请求对象和响应对象如何在网关和微服务之间传递?
此外,如果我决定构建一个自定义 api 网关,其中该网关监听不同的端口并包含在单独的 docker 容器中,那么它应该如何调节监听其他端口的其他 docker 容器中的微服务的权限?
简而言之,任何真正完成此过程并回答我上面列出的问题的文档都将非常有帮助。此外,如果我以错误的方式看待这个问题或提出错误的问题,这方面的建议也会有所帮助。
最佳答案
我建议使用 Cognito 用户池来保护您的 API,但您需要 Lambda 函数作为后端,因为 API Gateway 不支持 VPC 集成。建议你看看this blog post用于将 Cognito 用户池设置为 API 的授权者。
如果您希望客户自己注册用户,您可以使用 Lambda 函数来执行注册逻辑并通过 API 网关公开它。
关于node.js - AWS Api Gateway : How to handle authorization, 身份验证、SSO 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912247/