[前言]:
下面我們將配置key-auth插件以向服務添加身份驗證。
key-auth
為Service設置key,只有帶有正確的key才能訪問Kong API
- 添加此插件之前, 對服務的所有請求都將在上游代理。
- 添加和配置此插件后,只有具有正確密鑰的請求才會被代理,其他未經認證的請求將被Kong拒絕,從而保護您的上游服務免遭未經授權的使用。
1. 配置密鑰驗證插件
要為您在Kong中配置的service
配置key-auth插件,請發出以下CURL請求:
$ curl -i -X POST \
--url http://localhost:8001/services/example-service/plugins/ \
--data 'name=key-auth'
注意:此插件還接受一個config.key_names
參數,默認為['apikey']
。它是應該在請求期間包含apikey的標頭和參數名稱(均受支持)的列表。
2. 確認插件配置正確
發出以下cURL請求,以驗證是否 在服務上正確配置了key-auth插件:
$ curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: example.com'
由於您未指定所需的apikey
標頭或參數,因此響應應為401 Unauthorized:
HTTP/1.1 401 Unauthorized
...
{
"message": "No API key found in request"
}
由上我們已經成功配置了key-auth 插件,我們還需要將消費者cunsumer添加到服務中,以便繼續通過Kong代理請求。
如果對Cunsumer的概念不清楚,請參考官網 consumer-object
3. 創建cunsumer
讓我們創建一個Jason通過發出以下請求命名的用戶:
$ curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=Jason" \
--data "custom_id=Jason"
注意:custom_id
在創建使用者以將使用者與現有用戶數據庫相關聯時,Kong還接受參數。
4. 給cunsumer提供關鍵憑證
現在,我們可以Jason通過發出以下請求為最近創建的使用者創建密鑰:
$ curl -i -X POST \
--url http://localhost:8001/consumers/Jason/key-auth/ \
--data 'key=123456'
5. 驗證
現在,我們可以發出以下請求來驗證我們的Jason消費者憑證是否有效:
$ curl -i -X GET \
--url http://localhost:8000 \
--header "Host: example.com" \
--header "apikey: 123456"
瀏覽器
- 不發送consumer認證密鑰,
401 Unauthorized
- 發送consumer認證密鑰
6. 小結
- 插件不僅能作用於 service,也可以作用於route
- 插件默認作用於all comsumers,並根據需求確定是否設置訪問憑證
[sleepy↓]