Fizz閘道器入門教程-許可權校驗
概述
通過閘道器暴露的介面,必須配置路由。
許可權校驗是對請求介面的客戶端的認證,確認其能否訪問介面。
客戶端可通過 fizz-appid 請求頭表明身份,即表明自身是什麼應用。
管理後臺可配置應用的認證方式,當前支援 md5、金鑰、自定義 3 種方式。
路由可關聯應用,即對訪問介面的客戶端認證。
下面以 “路由-反向代理” 的例子為基礎,介紹應用的定義及 3 種認證方式。
應用定義
管理後臺定義應用 client-app-1:
配置認證
金鑰認證
上面的配置:閘道器對請求頭 fizz-appid=client-app-1 的客戶端,會檢驗 fizz-sign 請求頭是否為圖中的金鑰。
md5認證
上面的配置:閘道器 MD5【client-app-1 + fizz-ts(時間戳,毫秒) + 95c6990e07714a63aba8354fa6544701】,檢查前值是否與客戶端傳遞的 fizz-sign 一致。
自定義
認證方式選 “自定義外掛”,在閘道器程式碼中繼承 AbstractCustomAuth.java,並實現
public abstract Mono<Result<?>> auth(String appId, String ip, String timestamp, String sign, App fizzAppConfig, ServerWebExchange exchange); // appId: client-app-1 // ip: 客戶端 ip // timestamp: fizz-ts // sign: fizz-sign // fizzAppConfig: 應用配置
實現類標註為 @Component,閘道器需重啟,如:
@Component public class MyAuth extends AbstractCustomAuth { @Override public Mono<Result<?>> auth(String appId, String ip, String timestamp, String sign, App fizzAppConfig, ServerWebExchange exchange) { if (fizzAppConfig.secretkey.equals(sign)) { return Mono.just(Result.succ()); // 認證通過 } return Mono.just(Result.fail("金鑰不對")); // 響應客戶端 "金鑰不對" } }
路由配置
在 “路由-反向代理” 的例子上:
選擇 client-app-1 儲存後:
這樣配置後:只有 client-app-1 客戶端能訪問 aservice/a/b,同時閘道器會根據 client-app-1 的認證方式,校驗請求。
Fizz閘道器介紹
Fizz Gateway 是一個基於 Java開發的微服務聚合閘道器,能夠實現熱服務編排聚合、自動授權選擇、線上服務指令碼編碼、線上測試、高效能路由、API稽核管理、回撥管理等目的,擁有強大的自定義外掛系統可以自行擴充套件,並且提供友好的圖形化配置介面,能夠快速幫助企業進行API服務治理、減少中間層膠水程式碼以及降低編碼投入、提高 API 服務的穩定性和安全性。
GitHub: https://github.com/wehotel/fizz-gateway-community
碼雲:https://gitee.com/fizzgate/fizz-gateway
入門教程:https://www.fizzgate.com/fizz/guide/GettingStarted/
作者:lancer