授权就是对是否可以访问某一类资源的一个认证。Kong Gateway有一个插件库 methods of API gateway 支持大部分的授权功能的使用。
- Key Authentication
- Basic Authentication
- OAuth 2.0 Authentication
- LDAP Authentication Advanced
- OpenID Connect
1、启用授权插件
API 密钥身份验证是强制执行 API 身份验证的常用方法。在密钥认证中,Kong网关用于生成API密钥并将其与消费者关联。该密钥是客户端在发出后续请求时提供的身份验证机密。Kong Gateway根据所提供密钥的有效性批准或拒绝请求。此过程可以应用于全局或单个服务和路由
翻译是个好东西,虽然我能读懂,但是自己翻译水平不行!
设置消费者和key
Kong 网关中的密钥身份验证通过使用使用者对象来工作。密钥分配给使用者,客户端应用程序在它们发出的请求中提供密钥。
创建一个消费者
curl -i -X POST http://localhost:8001/consumers/ \ --data username=luka
给消费者设置一个key
curl -i -X POST http://localhost:8001/consumers/luka/key-auth \ --data key=top-secret-key
全局授权
启用key授权
curl -X POST http://localhost:8001/plugins/ \ --data "name=key-auth" \ --data "config.key_names=apikey"
发送一个未授权的请求
curl -i http://localhost:8000/mock/request
这时候返回401错误
HTTP/1.1 401 Unauthorized ... { "message": "No API key found in request" }
发送一个错误的key
curl -i http://localhost:8000/mock/request \ -H 'apikey:bad-key'
返回401错误码
HTTP/1.1 401 Unauthorized ... { "message":"Invalid authentication credentials" }
- 发送一个正确的key
curl -i http://localhost:8000/mock/request \ -H 'apikey:top-secret-key'
基于service服务的授权
curl -X POST http://localhost:8001/services/example-service/plugins \ --data name=key-auth
- 基于route路由的授权
curl -X POST http://localhost:8001/routes/example-route/plugins \
--data name=key-auth
停用插件
查看所有插件,找到auth的插件id
curl -X GET http://localhost:8001/plugins/
禁用插件
curl -X PATCH http://localhost:8001/plugins/a4995735-01cd-4f0f-a2c4-e4a2fcae5401\ --data enabled=false
验证禁用是否成功
curl -i http://localhost:8000/mock/request