概述
API網關是API 托管服務,提供 API 的完整生命周期管理,包括創建、維護、發布、運行、下線、運維監測、安全管控等階段。通過API網關服務,可以將您的數據、業務邏輯或功能安全可靠的開放出來,以快速建設以API為核心的系統架構,為業務系統、合作伙伴提供連接。
消費者
消費者通常是網關的調用方,比如可以是客戶端程序等,所以通常也可以稱為應用;當消費者請求路由到網關時,網關會對消費者進行識別。網關要判斷這個調用者有沒有訪問當前路由的權限,如果沒有,網關就會拒絕當前請求,否則就會通過路由請求并對請求進行進一步的處理。識別過程我們叫做鑒權,那么鑒權之前,為確保具有路由請求的權限,以允許對應消費者訪問路由,會給目標路由進行授權,也即是消費者授權或者叫做應用授權。

摘要簽名認證
當前網關支持的認證鑒權方式為摘要簽名認證方式。API網關提供前端簽名及驗簽能力,前端簽名及驗簽主要兩點用途:
- 驗證客戶端請求的合法性,確認請求中攜帶授權后的AK生成的簽名。
- 防止請求數據在網絡傳輸過程中被篡改。
API的擁有者可以在網關控制臺的應用管理頁面生成APP,每個APP會攜帶一對簽名密鑰(APP Key和APP Secret),API擁有者將API授權給指定的APP(APP可以是API擁有者頒發或者API調用者所有)后,API調用者就可以用APP的簽名密鑰來調用相關的API了。
AppKey和AppSecret
客戶端調用API 時,需要使用已授權簽名密鑰對請求內容的關鍵數據進行加密簽名計算,并且將APP Key和加密后生成的字符串放在請求的 Header 傳輸給API網關,API網關會讀取請求中的APP Key的頭信息,并且根據APP Key的值查詢到對應的APP Secret的值,使用APP Secret對收到的請求中的關鍵數據進行簽名計算,并且使用自己的生成的簽名和客戶端傳上來的簽名進行比對,來驗證簽名的正確性。只有簽名驗證通過的請求才會發送給后端服務,否則API網關會認為該請求為非法請求,直接返回錯誤應答。
AppCode簡單認證
擴展功能,暫未上線,作為保留字段。
AppCode簡單認證就如同字面含義,旨在為用戶提供一種快捷簡單的認證方式去進行授權簽名,無需在客戶端實現復雜的簽名算法,其作用等同于AppKey和AppSecret配對使用的效果。
后續將會允許用戶通過header或者query參數調用AppCode,進行簡單認證。
注意簡單認證方式調用非常省事,免去了復雜的簽名過程,但是把AppCode作為明文暴露網絡中傳輸,會帶來一些安全隱患,存在丟失AppCode的風險。
API對消費者鑒權和自定義鑒權插件之間的關系?
消費者/應用配置可以在不同資源池中可以共享,在租戶/用戶級別上是隔離的,也即是說用戶User-1在區域Region-1創建了的應用App-A,當用戶User-1切換區域到Region-B后,在應用列表可以看到App-A,并且可以對App-A進行修改、解除API的授權等操作,該操作在用戶User-1下所有區域及區域下已授權的所有API中進行同步。

自定義鑒權插件,對網關來講屬于實例級別的應用范圍。用戶在當前實例Instance-1下添加的鑒權配置(插件配置管理),只適用于實例Instance-1中所有的API。

總體來講,消費者適用于租戶級別下的API授權管理,不受區域、資源池、實例的限制;自定義鑒權插件,通常是作用與實例級別下的API授權管理,范圍更小。