【API网关kong系列八】- key-auth插件

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
enabledTRUE是否启用
config.key_namesapikeykey的名称,用逗号隔开,只能是大小写字母,数字,下划线杠等
config.key_in_bodyFALSE如果启用,插件读取请求体,并尝试从中读取到key
config.hide_credentials如果身份验证失败,该值(消费之uuid)用做匿名使用者。如果为空,请求失败提示认证失败 4xx,注意这个值必须制定消费者id属性,而不是他的custom_id
config.ren_on_preflightTRUE如果设置为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

    原文作者:阅历笔记
    原文地址: https://segmentfault.com/a/1190000019947774
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞