如何启用插件?
1、通过以下请求在服务上配置这个插件:
$ curl -X POST http://kong:8001/services/{service}/plugins \
--data "name=basic-auth" \
--data "config.hide_credentials=true"
2、在路由上启用插件:
$ curl -X POST http://kong:8001/routes/{route_id}/plugins \
--data "name=basic-auth" \
--data "config.hide_credentials=true"
3、在API上启用插件(API管理自0.13.0版本已过时)
$ curl -X POST http://kong:8001/apis/{api}/plugins \
--data "name=basic-auth" \
--data "config.hide_credentials=true"
所有插件都可以使用 http://kong:8001/plugins/ 进行通用配置。这是与任何服务、路由或消费者都无关的插件,它是“公共的”,并且将在每个请求上运行。下面是basic-auth插件可配置参数列表:
形式参数 | 默认值 | 描述 |
---|---|---|
name |
插件名称, 这里是 basic-auth
|
|
service_id |
插件针对的服务ID | |
route_id |
插件针对的路由ID | |
enabled |
true |
插件是否可用 |
api_id |
插件针对的API模块 | |
config.hide_credentials 可选
|
false |
可选的布尔值,告诉插件从上游服务中显示或隐藏凭证. 如果为"true",插件将在代理之前将凭据从请求中剥离(例如:Authorization 头部) |
config.anonymous 可选
|
可选字符串,如果身份验证失败,该值(消费者uuid)用作“匿名”使用者。 如果空(默认),请求失败将提示认证失败“4xx”。请注意,这个值必须是指向消费者 id 属性, 而不是 它的 custom_id . |
一旦应用,任何具有有效凭证的用户都可以访问Service/API。要限制只有部分经过身份验证的用户,还可以添加ACL插件,并创建白名单或黑名单用户组。
如何使用插件?
1、 创建一个消费者:
curl -d "username=user123&custom_id=SOME_CUSTOM_ID" http://kong:8001/consumers/
参数 | 默认值 | 描述 |
---|---|---|
username 半可选 | 必须制定username或custom_id其中一个 | |
custom_id 半可选 | 必须制定username或custom_id其中一个 |
一个消费者可以有很多凭证。如果您还使用该服务的ACL插件和白名单,您必须将新消费者添加到白名单组。
2、创建一个凭证
您可以通过发出以下HTTP请求来提供新的用户名/密码凭证:
$ curl -X POST http://kong:8001/consumers/{consumer}/basic-auth \
--data "username=Aladdin" \
--data "password=OpenSesame"
3、使用凭证
授权头必须是base64编码的。例如,如果凭证用户是Aladdin
,密码是OpenSesame
,那么就是Aladdin:OpenSesame
的base64编码,即QWxhZGRpbjpPcGVuU2VzYW1l
。例如:
$ curl http://kong:8000/{path matching a configured Route} \
-H 'Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l'
4、上游头部
当客户端经过身份验证时,插件会在将其代理到上游服务之前,在请求中附加一些头信息,这样您就可以在代码中识别使用者:
- X-Consumer-ID,消费者ID
- X-Consumer-Custom-ID, 消费者的
custom_id
(如果有设置) - X-Consumer-Username, 消费者的
username
(如果有设置) - X-Credential-Username, 证书的
username
(只有当消费者不是anonymous
消费者的时候) - X-Anonymous-Consumer, 当身份验证失败时,将被设置为true,取而代之的是
anonymous
消费者。
5、通过basic-auth凭证进行分页
$ curl -X GET http://kong:8001/basic-auths
属性 | 描述 |
---|---|
id 可选 | basic-auth认证id |
username 可选 | basic-auth认证用户名 |
consumer_id 可选 | A filter on the list based on the basic-auth credential consumer_id field. |
size 可选,默认100 | 要返回的对象数量 |
offset 可选 | 分页的游标、偏移 |
6、检索与凭证相关联的消费者
curl -X GET http://kong:8001/basic-auths/{username or id}/consumer