Version: Next
Key Authentication
用途說明#
可於服務或路由加上金鑰驗證。在傳送請求時,將金鑰帶入header或query string做驗證。
欄位配置說明#
| 變數 | 類型 | 預設值 | 說明 | 必填 |
|---|---|---|---|---|
| key_name | array of string | apikey | 代表這把金鑰的名字,可有多個代表名字。使用者在傳送請求時,帶入其中一個名字即可。 | |
| key_in_body | boolean | false | 開啟此項設定,插件會從請求的body中尋找金鑰。支援的MIME格式如下:application/www-form-urlencoded, application/json, 及 multipart/form-data。 | |
| hide_credentials | boolean | false | 此欄位決定將請求往後送至服務時是否帶上原本的驗證標頭內容。設定為true時,插件會把驗證內容自請求移除。 | |
| anonymous | string | 可設定"anonymous"使用者在驗證失敗時會使用此身份驗證。如此欄位為空,則請求之標頭沒帶上Authorization時會收到authentication failure 4xx的回應。要注意的是,此欄位需填入的是consumer本身之id,而不是custom_id。 | ||
| run_on_preflight | boolean | true | 開啟此項設定會驗證preflight請求;關閉此項設定則會讓所有preflight請求通過。 |
用法示例#
在全局啟用插件#
- 從網站左邊Menu中
外掛插件頁面中,點選右上角的新增外掛插件:

- 點選後,選擇
認證頁籤,並啟用Key Auth,填寫內容參考欄位配置說明,設定成功後,任何請求(不分服務、路由、用戶)皆需經過認證才能通過。
在服務端上啟用插件#
- 從網站左邊Menu中
服務 > 服務列表頁面中,選擇要啟用此插件的服務,假設為google,點選對應的編輯按鈕:

- 在編輯畫面中,點選上方的
外掛插件頁籤,再點選頁籤內容上方的新增外掛插件按鈕:

點選後,選擇 認證 頁籤,並啟用Key Auth,填寫內容參考欄位配置說明,設定成功後,僅有此服務(範例為google)請求需經過認證才能通過。
在路由端上啟用插件#
可以由兩種方式來選擇路由,並啟用插件:
方式一:路由列表#
- 從網站左邊Menu中
服務 > 路由列表頁面中,選擇要啟用此插件的路由,假設為google,點選對應的編輯按鈕:

方式二:服務 > 服務列表 > 路由列表#
- 從網站左邊Menu中
服務 > 服務列表頁面中,選擇要啟用此插件的路由 所屬之服務(假設為google),點選對應的編輯按鈕。
在編輯畫面中,點選上方的 路由 頁籤,選擇要啟用此插件的路由(假設為google),點選對應的編輯按鈕:

- 承第1步,點擊上述兩種方式之一的編輯按鈕後,在編輯畫面中,點選上方的
外掛插件頁籤,再點選頁籤內容上方的新增外掛插件按鈕:

點選新增外掛插件 按鈕後,選擇 認證 頁籤,並啟用Key Auth,填寫內容參考欄位配置說明,設定成功後,僅有此路由(範例為google)請求需經過認證才能通過。
建立使用者及金鑰#
從網站左邊Menu中
訂閱用戶 > 用戶列表頁面中選擇右上方新增按鈕,新增用戶。選擇剛建立的使用者,進入編輯頁面,選擇上方
憑證頁籤,然後選擇左邊Key Authentication頁籤,再選擇列表左上方的新增按鈕。

- 金鑰欄位可填可不填。可填入一組獨特的金鑰或是留空自動生成。圖為自動生成的一把金鑰。


驗證#
選擇一路由開啟此插件服務 (將
key_name設為testing),並建立好使用者及金鑰 (範例為將路由之域名設定為google,路徑設定為/index,並開啟拆分路徑)此時在console上送出以下指令
會得到以下回應
代表插件正常運作,並阻擋未通過驗證之請求
- 以下有3種方式可代入金鑰:
方法一:將金鑰帶入header#
在console上送出以下指令 (帶入header為 key_name: key )
即可得到正常的回應
方法二:將金鑰做為query string#
在console上送出以下指令
即可得到正常的回應
方法三:將金鑰帶入body#
此方法需在插件打開 key_in_body 這項設定 (注意:打開此設定後,插件將只檢查body,就算將金鑰帶入header或是query string也不會通過)
在console上送出以下指令
即可得到正常的回應