basic-auth外掛程式實現了基於HTTP Basic Auth標準進行認證鑒權的功能。本文介紹如何配置basic-auth外掛程式。
外掛程式類型
認證鑒權。
配置欄位
認證配置
名稱 | 資料類型 | 填寫要求 | 預設值 | 描述 |
consumers | array of object | 必填。 | - | 佈建服務的調用者,用於對請求進行認證。 |
global_auth | array of string | 選填(**僅執行個體層級配置**) | - | 只能在執行個體層級配置,若配置為true,則全域生效認證機制; 若配置為false,則只對做了配置的網域名稱和路由生效認證機制,若不配置則僅當沒有網域名稱和路由配置時全域生效(相容老使用者使用習慣)。 |
子項consumers中每一項的配置欄位說明如下。
名稱 | 資料類型 | 填寫要求 | 預設值 | 描述 |
credential | string | 必填。 | - | 配置該consumer的訪問憑證。 |
name | string | 必填。 | - | 配置該consumer的名稱。 |
鑒權配置(非必需)
名稱 | 資料類型 | 填寫要求 | 預設值 | 描述 |
allow | array of string | 選填(**非執行個體層級配置**)。 | - | 只能在路由或網域名稱等細粒度規則上配置,對於符合匹配條件的請求,配置允許訪問的 consumer,從而實現細粒度的許可權控制。 |
在一個規則裡,鑒權配置和認證配置不可同時存在。
對於通過認證鑒權的請求,請求的Header會被添加一個
X-Mse-Consumer欄位,用以標識調用者的名稱。
配置樣本
全域配置認證和路由粒度進行鑒權
以下配置將對網關特定路由或網域名稱開啟Basic Auth認證和鑒權。
憑證資訊中的使用者名稱和密碼之間使用":"分隔。
credential欄位不能重複。
在執行個體層級做如下外掛程式配置:
global_auth: false
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2在route-a和route-b兩個路由做如下外掛程式配置:
allow:
- consumer1在*.example.com和test.com兩個網域名稱做如下外掛程式配置:
allow:
- consumer2此例指定的
route-a和route-b即在建立網關路由時填寫的路由名稱,當匹配到這兩個路由時,將允許name為consumer1的調用者訪問,其他調用者不允許訪問。此例指定的
*.example.com和test.com用於匹配請求的網域名稱,當發現網域名稱匹配時,將允許name為consumer2的調用者訪問,其他調用者不被允許訪問。
根據該配置,下列請求可以允許訪問。
請求指定使用者名稱密碼。
# 假設以下請求將會匹配到route-a路由
# 使用 curl 的 -u 參數指定
curl -u admin:123456 http://xxx.hello.com/test
# 或者直接指定 Authorization 要求標頭,使用者名稱密碼使用 base64 編碼
curl -H 'Authorization: Basic YWRtaW46MTIzNDU2' http://xxx.hello.com/test認證鑒權通過後,請求的Header中會被添加一個X-Mse-Consumer欄位,在此例中其值為consumer1,用以標識調用方的名稱。
下列請求將拒絕訪問。
請求未提供使用者名稱密碼,返回401。
curl http://xxx.hello.com/test請求提供的使用者名稱密碼錯誤,返回401。
curl -u admin:abc http://xxx.hello.com/test根據請求的使用者名稱和密碼匹配到的調用者無存取權限,返回403。
# consumer2不在route-a的allow列表裡 curl -u guest:abc http://xxx.hello.com/test
網關執行個體層級開啟
以下配置將對網關執行個體層級開啟 Basic Auth 認證,所有請求均需要經過認證後才能訪問。
global_auth: true
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2相關錯誤碼
HTTP狀態代碼 | 出錯資訊 | 原因說明 |
401 | Request denied by Basic Auth check. No Basic Authentication information found. | 請求未提供憑證。 |
401 | Request denied by Basic Auth check. Invalid username and/or password. | 請求憑證無效。 |
403 | Request denied by Basic Auth check. Unauthorized consumer. | 請求的調用方無存取權限。 |