Consumer
如上图所示,作为 API 网关,需要知道 API Consumer(消费方)具体是谁,这样就可以对不同 API Consumer 配置不同规则。
- 授权认证:比如有 key-auth、 等。
- 获取 consumer_name:通过授权认证,即可自然获取到对应的 Consumer name,它是 Consumer 对象的唯一识别标识。
- 获取 Consumer 上绑定的 Plugin 或 Upstream 信息:完成对不同 Consumer 做不同配置的效果。
概括一下,Consumer 是某类服务的消费者,需与用户认证体系配合才能使用。 比如不同的 Consumer 请求同一个 API,网关服务根据当前请求用户信息,对应不同的 Plugin 或 Upstream 配置。
如何对某个 Consumer 开启指定插件,可以看下面例子:
结合 consumer-restriction 插件,限制 jack 对该 route 的访问
$ curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"consumer-restriction": {
"blacklist": [
]
}
},
"upstream": {
"nodes": {
},
},
"uri": "/hello"
}'
# 反复测试,均返回 403,jack 被禁止访问
$ curl http://127.0.0.1:9080/hello -H 'apikey: auth-one' -I