Consumer

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

    Consumer Internal

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

    概括一下,Consumer 是某类服务的消费者,需与用户认证体系配合才能使用。 比如不同的 Consumer 请求同一个 API,网关服务根据当前请求用户信息,对应不同的 Plugin 或 Upstream 配置。

    如何对某个 Consumer 开启指定插件,可以看下面例子:

    结合 consumer-restriction 插件,限制 jack 对该 route 的访问

    1. $ curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    2. {
    3. "plugins": {
    4. "consumer-restriction": {
    5. "blacklist": [
    6. ]
    7. }
    8. },
    9. "upstream": {
    10. "nodes": {
    11. },
    12. },
    13. "uri": "/hello"
    14. }'
    15. # 反复测试,均返回 403,jack 被禁止访问
    16. $ curl http://127.0.0.1:9080/hello -H 'apikey: auth-one' -I