使用 Public 微服务验证 Api 网关 (Kong)

Authenticating Api Gateway (Kong) With A Public MicroService

我们有一个可通过互联网公开访问的网络应用程序。此应用程序在包含应用程序可以调用(包括用户身份验证)的整体 APIs 的网络服务器上运行。我们想公开一个 "API"(ex// 收集数据)供用户从他们自己的代码中查询有关他们帐户的一组有限数据。这将允许他们使用我们为他们收集的数据编写自定义仪表板。

有了这个新的 API,API 调用现在可以来自我们的 web-ap 以外的其他地方。所以我们要设置一个API网关来管理请求"load"。例如,网关可以将用户的请求限制为每十分钟一次。

最终用户将获得一个 API 密钥以通过 Kong 发出请求,然后 Kong 将使用 HTTP GET/POST 向 Web 服务器执行 API 查询.由于我们的 Web 服务器是公开可用的,因此我们需要一种方法来验证 API(收集数据)的请求仅来自 Kong。我对 JWT 做了一些研究,似乎是一种可能的方法。简单地为 Kong 服务器提供由 Web 服务器发布的自己的 JWT 是否有意义?然后任何 GET/POST 到没有 Kong JWT 的网络服务器都会被拒绝。

我知道这可能不是 API 网关最合乎逻辑的设置,通常你会在与 Kong 相同的私有网络上拥有微服务相互通信并且不一定需要验证真实性Kong 将处理这些请求。但是,考虑到我们当前的设置,JWT 方法是否最有意义?

所以您希望您的 Kong 实例通过一些只有您知道的秘密与您的上游服务器通信,这样您就可以确定到您的上游服务器的流量来自您的 Kong 实例?

没问题!有几种方法可以做到这一点。在响应客户端之前,您可以使用 https://getkong.org/plugins/request-transformer/ to add a header that contains some secret string (and then potentially use https://getkong.org/plugins/response-transformer/ 删除 header)。

真的,这取决于您的上游服务器在请求验证方面支持什么。

您还提到提供 end-users API 密钥 - 我希望您会使用 https://getkong.org/plugins/key-authentication/ 来做到这一点。