我们有一个可以通过互联网公开访问的网络应用程序 . 此应用程序在Web服务器上运行,该服务器包含应用程序可以调用的一整套API(包括用户身份验证) . 我们希望为用户公开“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方法是否最有意义?
1 回答
因此,您希望您的Kong实例与您的上游服务器通信只有您知道的秘密,以便您可以确定上游服务器的流量来自您的Kong实例?
当然可以!有几种方法可以做到这一点 . 您可以使用https://getkong.org/plugins/request-transformer/添加包含一些秘密字符串的标头(然后在响应客户端之前可能使用https://getkong.org/plugins/response-transformer/删除该标头) .
实际上,它取决于您的上游服务器在验证请求方面支持的内容 .
您还提到了为最终用户提供API密钥 - 我'm hopeful you'将使用https://getkong.org/plugins/key-authentication/来执行此操作 .