API网关kong系列八-keyauth插件

70次阅读

共计 1964 个字符,预计需要花费 5 分钟才能阅读完成。

1、前言

Kong 的核心原则之一是它通过插件的可扩展性。插件允许你轻松的向服务添加新功能或使其更易于管理。

2、key-auth 插件

在下面的步骤中,您将配置 key-auth 插件以向您的服务添加身份验证。在添加此插件之前,对您的服务的所有请求都将在上游代理。添加和配置此插件后,只有具有正确密钥的请求才会被代理 – 所有其他请求将被 Kong 拒绝,从而保护您的上游服务免遭未经授权的使用。

3、配置 Key-auth 插件

要为您在 Kong 中配置的服务配置 key-auth 插件,请发出以下 cURL 请求:

3.1、在 service 上启动插件

$ curl -i -X POST \
  --url http://localhost:8001/services/{service name}/plugins/ \
  --data 'name=key-auth'

3.2、在 Route 上启动插件

$ curl -i -X POST \
  --url http://localhost:8001/routes/{routes id or name}/plugins/ \
  --data 'name=key-auth'

注意:此插件还接受一个 config.key_name 的默认参数【’apikey’】。他是一个标题和参数名称列表(两者都支持),请求期间需要包含 apikey 参数。

3.3、key-auth Api 参数列表

形式参数 默认值 描述
name 插件名称
serivce_id 服务 id
toute_id 路由 id
enabled TRUE 是否启用
config.key_names apikey key 的名称,用逗号隔开,只能是大小写字母,数字,下划线杠等
config.key_in_body FALSE 如果启用,插件读取请求体,并尝试从中读取到 key
config.hide_credentials 如果身份验证失败,该值(消费之 uuid)用做匿名使用者。如果为空,请求失败提示认证失败 4xx, 注意这个值必须制定消费者 id 属性,而不是他的 custom_id
config.ren_on_preflight TRUE 如果设置为 true 那么插件将运行在请求之前。如果为 false 那么请求将总是被允许。

根据上述操作、一个简单的插件就常见完成了,我在测试时是创建在 service 上,用的是《【API 网关 Kong 系列七】- 完整转发请求示例》中的服务示例.

3.4、验证插件

发送以下 CURL 命令以验证 key-auth 插件是否已配置成功。

$ curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: example.com'

由于未指定所有的 apikey heaser 或者参数,因此响应为 401 Unauthorized

HTTP/1.1 401 Unauthorized
...

{"message": "No API key found in request"}

由上我们已经成功配置了 key-auth 插件,想使用我们还的将消费者添加到服务中,以便我们可以继续通过 Kong 实现代理请求。

4、添加一个消费者

消费者 Consumer 我在这就不过多的介绍了,还不了解的可以看《企业级 API 网关 Kong 系列》
创建一个用户名为 Jason 的消费者

$ curl -i -X POST \
  --url http://localhost:8001/consumers/ \
  --data "username=Jason"

响应如下

HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive

{
  "username": "Jason",
  "created_at": 1428555626000,
  "id": "bbdf1c48-19dc-4ab7-cae0-ff4f59d87dc9"
}

到这成功的将消费者添加到 Kong 中
注意:custom_id 在创建可以在创建消费着是指定此参数。

5、为消费者提供密钥凭证

$ curl -i -X POST \
  --url http://localhost:8001/consumers/Jason/key-auth/ \
  --data 'key=ENTER_KEY_HERE'

6、验证

可以发送如下请求,来验证我们的 Jason 的密钥是否生效

  $ curl -i -X GET \
  --url http://localhost:8000 \
  --header "Host: example.com" \
  --header "apikey: ENTER_KEY_HERE"

好了,到这我们一个 Key-auth 的插件已经配置完成。

7. 总结

插件的使用也很简单,主要为以下几个步骤。
1: 首先要启用一个插件,可以在 service 或者 route 上。
2: 需要给插件创建一个消费者,并设置访问凭着

想了解更多关于 Kong 网关的请移步 >>>>> 企业级 API 网关 Kong

正文完
 0