代码之家  ›  专栏  ›  技术社区  ›  Matt W

从API网关传递终结点获取OAuth令牌

  •  0
  • Matt W  · 技术社区  · 3 年前

    我有一个端点,我通常只从我的应用程序中调用它。端点仅从内部restful api返回数据。要调用它,我的应用程序必须使用oauth客户端ID和secret来获取令牌。这发生在我的应用程序中,没有任何用户参与,因为用户不需要知道这件事。

    我想将我的应用程序作为无服务器应用程序迁移到AWS,这意味着整个逻辑可以移动到S3上托管的静态站点部分。

    唯一的问题是,因为我不需要lambda或其他服务器端应用程序,所以我没有安全检索oauth令牌的方法,也无法进行内部API调用。

    我想我可以做一个API网关配置,它可以通过从secret Manager检索ID和secret来获取令牌,进行oauth令牌调用,然后将令牌应用于内部传递请求的头。

    这可能吗?或者我肯定需要一个服务器端应用程序来首先获取令牌吗?

    示例旅程:

    S3通过CloudFront为VueJS站点提供服务>JS调用公共API网关端点>端点调用密钥管理器以获取oauth凭据>端点调用内部企业(私有)api以获取oauth令牌>端点调用内部公司(私有)端点以获取数据,在标头中传递令牌>端点向客户端返回数据

    0 回复  |  直到 3 年前
        1
  •  1
  •   Meir Gabay    3 年前

    你可以用 CloudFront Lambda @ Edge .

    由于您使用S3为静态网站提供服务,将其置于CloudFront分发之后,您将能够使用HTTPS安全地提供内容(使用AWS更容易 Certificate Manager ACM )并通过设置Lambda@Edge功能在 CloudFront distribution's ViewerRequest .

    以下是一些如何实现它的示例:

    我通常使用此解决方案来保护临时环境(“公共”)免受未知用户的攻击。请注意此解决方案的成本,请参阅 Lambda@Edge Pricing 如果是大型组织,那么这个解决方案可能会很昂贵。