0

我想使用 Kong 作为我所有上游服务的 API 网关。我想使用 API 密钥,以便我的客户可以使用它来使用他们允许使用的一些 API。

有一个用于管理 API 密钥的插件:https ://docs.konghq.com/hub/kong-inc/key-auth/

但我想知道是否可以将属性添加到某些 API 密钥或将其链接到某些配置。

让我用一个例子来解释:

我有 3 个 API

  • API 1
  • API 2
  • API 3

在 Kong API Gateway 上,我想使用速率限制。所以我想为 2 个具有某些属性的客户生成 API 密钥

  • 客户 X:基本订阅,API 1 的速率限制为每分钟 10 个请求,API 2 的速率限制为每分钟 20 个请求
  • 客户 Y:API 2 的高级订阅,其速率限制为每分钟 5000 个请求,API 3 的速率限制为每分钟 1000 个请求

因此,在 Kong 中,我为这 3 个 API 创建了 3 个服务,并向其中添加了速率限制插件。有没有办法让速率限制插件知道(基于请求中发送的 API 密钥)它应该对刚刚输入的请求使用什么限制?

在我看来,我每次都需要为相同的 API 创建具有特定值的特定速率限制的新服务。在处理大量客户和 api 时,这感觉有点难以管理。

是否可以根据传递的 API 密钥获取速率限制值?

或者有什么解决办法吗?或者这是我们在 API 网关中想要的实际行为,如果是,为什么?

4

2 回答 2

0

您也可以在消费者级别配置插件。这有效地将适当的速率限制应用于每个消费者(api 密钥)。

文档中的示例代码:

$ curl -X POST http://kong:8001/consumers/{consumer}/plugins \
    --data "name=rate-limiting" \
     \
    --data "config.second=5" \
    --data "config.hour=10000"

文档:https ://docs.konghq.com/hub/kong-inc/rate-limiting/#enabling-the-plugin-on-a-consumer

于 2019-10-11T21:35:35.247 回答
0

Kong Enterprise Edition 有一个名为“ Rate Limiting Advanced ”的插件可以解决这个问题。它允许您为每个速率限制插件指定一个“标识符”,对于这种特殊情况,您将使用“标识符:消费者”。如果你想为同一个 API 和不同的消费者设置两个不同的速率限制,例如

  • API2:consumerX 有 20rpm
  • API2:consumerY 有 5000rpm

那么你必须在消费者上而不是在 api 上配置速率限制。另外,在您提到的问题中apis;FYIapi对象自 v0.13.0 起已弃用,您应该移至route/service对象。

于 2019-07-03T15:43:32.433 回答