如何启用Key验证?
1、在服务上启用插件
$ curl -X POST http://kong:8001/services/{service}/plugins \
--data "name=key-auth"
2、在路由上启用插件
$ curl -X POST http://kong:8001/routes/{route_id}/plugins \
--data "name=key-auth"
3、在API上启用插件
$ curl -X POST http://kong:8001/apis/{api}/plugins \
--data "name=key-auth"
所有插件都可以使用 http://kong:8001/plugins/ 进行通用配置。这是与任何服务、路由或消费者都无关的插件,它是“公共的”,并且将在每个请求上运行。下面是key-auth参数列表
形式参数 | 默认值 | 描述 |
---|---|---|
name |
插件名称,这里是key-auth
|
|
service_id |
服务ID | |
route_id |
路由ID | |
enabled |
true |
是否可用. |
api_id |
API ID | |
config.key_names optional
|
apikey |
key名称,用逗号隔开。只包含 [a-z], [A-Z], [0-9], [_] 和 [-]. |
config.key_in_body optional
|
false |
如果启用,插件读取的请求主体,并尝试从中读取key. 支持的 MIME 类型 application/www-form-urlencoded , application/json , 和multipart/form-data . |
config.hide_credentials optional
|
false |
插件上游服务中显示或隐藏凭证. |
config.anonymous optional
|
如果身份验证失败,该值(消费者uuid)用作“匿名”使用者。 如果空(默认),请求失败将提示认证失败“4xx”。请注意,这个值必须是指向消费者 id 属性, 而不是 它的 custom_id . |
|
config.run_on_preflight optional
|
true |
如果设为true 那么插件将运行在请求之前;如果设为 false 那么请求将总是被允许. |
如何使用Key验证?
1、创建消费者
$ curl -X POST http://kong:8001/consumers/ \
--data "username=<USERNAME>" \
--data "custom_id=<CUSTOM_ID>"
2、创建Key
$ curl -X POST http://kong:8001/consumers/{consumer}/key-auth -d ''
HTTP/1.1 201 Created
{
"consumer_id": "876bf719-8f18-4ce5-cc9f-5b5af6c36007",
"created_at": 1443371053000,
"id": "62a7d3b7-b995-49f9-c9c8-bac4d781fb59",
"key": "62eb165c070a41d5c1b58d9d3d725ca1"
}
3、使用Key验证
$ curl http://kong:8000/{proxy path}?apikey=<some_key>
# 或者
$ curl http://kong:8000/{proxy path} \
-H 'apikey: <some_key>'
4、删除Key验证
$ curl -X DELETE http://kong:8001/consumers/{consumer}/key-auth/{id}
5、上游头部(同Basic验证插件)
6、分页查询
$ curl -X GET http://kong:8001/key-auths
7、检索与密钥相关联的使用者
curl -X GET http://kong:8001/key-auths/{key or id}/consumer