Consumer

    对于 API 网关而言,一般情况可以通过请求域名、客户端 IP 地址等字段识别到某类请求方,然后进行插件过滤并转发请求到指定上游。但有时候该方式达不到用户需求,因此 APISIX 支持了 Consumer 对象。

    如上图所示,作为 API 网关,需要知道 API Consumer(消费方)具体是谁,这样就可以对不同 API Consumer 配置不同规则。

    定义 Consumer 的字段如下:

    在 APISIX 中,识别 Consumer 的过程如下图:

    1. 授权认证:比如有 key-auth、 等;
    2. 获取 consumer_name:通过授权认证,即可自然获取到对应的 Consumer name,它是 Consumer 对象的唯一识别标识;
    3. 获取 Consumer 上绑定的 Plugin 或 Upstream 信息:完成对不同 Consumer 做不同配置的效果。

    你可以参考 key-auth 认证授权插件的调用逻辑,进一步理解 Consumer 概念和使用。

    Consumer - 图3注意

    如需了解更多关于 Consumer 对象的信息,你可以参考 Admin API Consumer 资源介绍。

    以下示例介绍了如何对某个 Consumer 开启指定插件:

    1. 创建 Consumer,指定认证插件 ,并开启特定插件 limit-count

    2. 连续发送三次测试请求,前两次返回正常,没达到限速阈值。

      第三次测试返回 503,请求被限制:

      1. HTTP/1.1 503 Service Temporarily Unavailable
      2. ...

    通过 consumer-restriction 插件,限制用户 jack 对该 Route 的访问。

    1. 设置黑名单,禁止 jack 访问该 API。

    2. 通过以下命令访问该路由,均返回 403, 被禁止访问。