Kong入門指南 - 6.使用身份驗證保護服務


下載Kong入門指南

Kong入門指南

目錄

1. 總覽

2. 准備管理Kong Gateway

3. 通過Kong Gateway公開您的服務

4. 保護您的服務

5. 通過代理緩存提高性能

6. 使用身份驗證保護服務

7. 設置智能負載平衡

在本主題中,您將了解API網關身份驗證,設置密鑰身份驗證插件以及添加使用者。

如果您根據入門指南學習,請確保已完成“Kong入門指南 - 通過代理緩存提高性能 ”。

什么是身份驗證?

API網關身份驗證是控制允許使用您的API傳輸的數據的重要方法。基本上,它使用一組預定義的憑據來檢查特定使用者是否有權訪問API。

Kong Gateway有一個插件庫,這些插件提供了實現API網關身份驗證的最廣為人知和使用最廣泛的方法的簡單方法。以下是一些常用的:

  • 基本認證
  • 密鑰認證
  • OAuth 2.0身份驗證
  • LDAP認證高級
  • OpenID連接

身份驗證插件可以配置為應用於Kong Gateway內的服務實體。反過來,服務實體與它們表示的上游服務是一對一映射的,從本質上講意味着認證插件直接應用於那些上游服務。

為什么要使用API​​網關身份驗證?

啟用身份驗證后,除非客戶端首先成功進行身份驗證,否則Kong Gateway不會代理請求。這意味着上游(API)不需要對客戶端請求進行身份驗證,也不會浪費用於驗證憑據的關鍵資源。

Kong Gateway可以查看所有身份驗證嘗試(成功,失敗等等),從而可以對這些事件進行分類和控制,以證明適當的控制措施已經存在並實現合規性。身份驗證還使您有機會確定如何處理失敗的請求。這可能意味着僅阻止請求並返回錯誤代碼,或者在某些情況下,您可能仍希望提供有限的訪問權限。

在此示例中,您將啟用密鑰驗證插件。API密鑰身份驗證是進行API身份驗證的最流行的方法之一,可以實現以根據需要創建和刪除訪問密鑰。

有關更多信息,請參見什么是API網關身份驗證?。

設置密鑰認證插件

1.在端口上調用Admin API 8001並配置插件以啟用密鑰身份驗證。對於此示例,將插件應用於您創建的/ mock路由。

使用cURL:

$ curl -X POST http://<admin-hostname>:8001/routes/mocking/plugins \
 --data name=key-auth
  1. 嘗試再次訪問該服務:
    使用cURL:
$ curl -i http://<admin-hostname>:8000/mock

由於添加了密鑰認證,因此您將無法訪問它:

 HTTP/1.1 401 Unauthorized
 ...
 {
     "message": "No API key found in request"
 }

在Kong代理請求此路由之前,它需要一個API密鑰。對於此示例,由於安裝了密鑰身份驗證插件,因此需要首先創建具有關聯密鑰的使用者。

設置使用者和憑證

  1. 要創建使用者,請調用Admin API和使用者的端點。下面創建了一個新的消費者,稱為Consumer。

使用cURL:

 $ curl -i -X POST -d "username=consumer&custom_id=consumer" http://<admin-hostname>:8001/consumers/
  1. 設置后,調用Admin API為上面創建的使用者設置密鑰。對於此示例,將密鑰設置為apikey。如果未輸入任何密鑰,則Kong將自動生成密鑰。

使用cURL:

$ curl -i -X POST http://<admin-hostname>:8001/consumers/consumer/key-auth -d 'key=apikey'

結果:

HTTP/1.1 201 Created
 ...
 {
     "consumer": {
         "id": "2c43c08b-ba6d-444a-8687-3394bb215350"
     },
     "created_at": 1568255693,
     "id": "86d283dd-27ee-473c-9a1d-a567c6a76d8e",
     "key": "apikey"
 }

現在,您已經為使用者提供了API密鑰,以訪問該路由。

驗證密鑰驗證

要驗證密鑰身份驗證插件,請使用密鑰值為的標頭再次訪問模擬路由。apikeyapikey

使用cURL:

$ curl -i http://<admin-hostname>:8000/mock/request -H 'apikey:apikey'

您應該得到一條HTTP/1.1 200 OK消息作為回應。

(可選)禁用插件

如果您按照主題逐個遵循此入門指南,則在以后的所有請求中都需要使用此API密鑰。如果您不想一直指定密鑰,請在繼續操作之前禁用插件。

  1. 找到插件ID並復制。

使用cURL:

$ curl -X GET http://<admin-hostname>:8001/routes/mocking/plugins/

輸出:

 "id": "2512e48d9-7by0-674c-84b7-00606792f96b"
  1. 禁用插件。
    使用cURL:
 $ curl -X PATCH http://<admin-hostname>:8001/routes/mocking/plugins/{<plugin-id>} \
 --data "enabled=false"

覺得有幫助,歡迎關注作者,點個“推薦”或“留言”,轉給朋友們


免責聲明!

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



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