Kong HMAC Auth Plugin:筆記與適用場景分析

前言 最近工作上在研究 API 認證方案,整理了一個 Kong HMAC Demo 來驗證 HMAC-SHA256 作為 Kong API Gateway 認證機制的可行性。趁還沒忘掉,記錄一下核心觀念與適用場景。 什麼是 HMAC HMAC(Hash-based Message Authentication Code)是一種利用雜湊函數(如 SHA-256)與共享金鑰(shared secret)產生訊息鑑別碼(MAC)的機制。 實際在 HTTP 請求中,client 會選取特定 header(例如 Date),以金鑰對其進行 HMAC 運算,產生 signature,再附在 Authorization header 中送出。 Authorization: hmac username="demo-user", algorithm="hmac-sha256", headers="date", signature="<base64-encoded-signature>" 為什麼 HMAC 可以作為身份驗證 HMAC 能作為身份驗證的核心原因在於:只有持有正確金鑰的人,才能產生出合法的 signature。 驗證流程如下: Client 計算簽章: Client 使用共享金鑰對指定 headers 計算 HMAC 簽章,附在請求中送出。 Server 重算比對: Server(這裡是 Kong)收到請求後,根據 username 找到對應的 consumer 及其 secret,對相同的 headers 重新計算一次 HMAC。 比對結果: 若兩端計算出的 signature 一致,代表請求方持有正確金鑰,身份即可確認。 防重放攻擊: Kong 的 HMAC plugin 要求簽章必須包含 Date header,並設定允許的時間偏移(clock skew)。若請求的時間戳記超出允許範圍(預設 ±300 秒),Kong 會直接拒絕請求,防止攻擊者截取請求後重放。 ...

March 8, 2026 · 2 分鐘