0

我们有一个可通过 Internet 公开访问的 Web 应用程序。此应用程序在包含应用程序可以调用的单片 API 集(包括用户身份验证)的 Web 服务器上运行。我们希望为用户公开一个“API”(例如//收集数据),以便从他们自己的代码中查询有关其帐户的一组有限数据。这将允许他们使用我们为他们收集的数据编写自定义仪表板。

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

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

我知道这可能不是 API 网关最合乎逻辑的设置,通常你会在与 Kong 相同的私有网络上拥有微服务,并且不需要像 Kong 那样验证传入请求的真实性处理那个。但是,鉴于我们当前的设置,JWT 方法最有意义吗?

4

1 回答 1

1

因此,您希望您的 Kong 实例与您的上游服务器进行通信,其中包含一些只有您知道的秘密,这样您就可以确定上游服务器的流量来自您的 Kong 实例?

确定的事!有几种方法可以做到这一点。您可以使用https://getkong.org/plugins/request-transformer/添加包含一些秘密字符串的标头(然后可能使用https://getkong.org/plugins/response-transformer/删除该标头之前回复客户)。

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

你还提到给你的最终用户 API 密钥——我希望你会使用https://getkong.org/plugins/key-authentication/来做到这一点。

于 2017-09-29T23:35:27.783 回答