【问题标题】:AWS Api Gateway: How to handle authorization, authentication, SSO, etcAWS Api Gateway:如何处理授权、身份验证、SSO 等
【发布时间】:2017-08-12 05:47:48
【问题描述】:

我正在审查几种使用微服务与 api 网关相结合的方法来重新开发 node.js 宁静的单体应用程序。在查看使用 aws api 网关时,虽然似乎有一些项目我无法找到很多文档。一方面,我正在设计的应用程序必须能够支持 SSO,我希望用户能够通过创建本地登录或使用他们当前的 facebook、twitter 等社交帐户进行注册。

aws api 网关将如何处理此过程,尤其是因为我需要使用自定义数据库来写入和读取,更不用说授权用户了?

另外,例如,假设我的微服务具有以下限界上下文:

帐户(登录、注册、个人资料管理),

计费(由于运行时间的原因,可能不适合无服务器,可能会选择 docker + ec2),

朋友(建立朋友关联),

文件(用户可以将图片和视频上传到他们的时间线 - 似乎是另一个 docker + ec2 候选者);

并且我想使用 api 网关来保护所有微服务端点,但特定于登录和注册的端点除外,该怎么做?

Node.js 包含一个似乎通过 facebook、twitter、local 等处理 jwt 和身份验证用户的包,称为护照,我可以将它与 api 网关身份验证一起使用吗?

另外,如果 api 网关保护微服务,请求对象和响应对象如何在网关和微服务之间传递各种请求?

此外,如果我决定构建一个自定义 api 网关,其中网关正在侦听不同的端口并包含在单独的 docker 容器中,它应该如何调节其他 docker 容器中侦听其他端口的微服务的权限?

简而言之,任何真正完成此过程并回答我上面列出的问题的文档都将非常有帮助。此外,如果我以错误的方式看待这个问题或提出错误的问题,这方面的建议也会有所帮助。

【问题讨论】:

    标签: node.js amazon-web-services passport.js aws-lambda aws-api-gateway


    【解决方案1】:

    我建议使用 Cognito 用户池来保护您的 API,但您需要一个 Lambda 函数作为后端,因为 API Gateway 不支持 VPC 集成。我建议您查看 this blog post 将 cognito 用户池设置为您的 API 的授权方。

    如果您希望您的客户自己注册用户,您可以使用 Lambda 函数来执行注册逻辑并通过 API 网关公开。

    【讨论】:

    • 你有文档吗?如果我想用 ec2 服务器和 docker 作为替代方案来设置微服务架构,它概述了如何实现 api 网关。我会权衡这两种选择。我发现很多文章解释了 api 网关的用途,但没有很多带有示例代码的文章概述了如何实现这一点?
    • 如果您想使用 ec2 实例设置微服务架构,您需要让您的 ec2 实例可公开访问。如果您希望您的 ec2 实例只能在您的 VPC 内部访问,您可以使用 Lambda 函数将来自 API Gateway 的请求代理到您的 VPC 内的 ec2 实例。
    猜你喜欢
    • 2017-03-12
    • 2017-11-24
    • 2016-08-20
    • 2015-05-19
    • 2011-06-05
    • 2019-12-14
    • 1970-01-01
    • 2012-03-25
    • 2018-07-14
    相关资源
    最近更新 更多