[Kong] key-auth實現對API請求的密鑰認證



[前言]

下面我們將配置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↓]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM