1. 程式人生 > 其它 >Fizz閘道器入門教程-許可權校驗

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 服務的穩定性和安全性。

官網:https://www.fizzgate.com

GitHub: https://github.com/wehotel/fizz-gateway-community

碼雲:https://gitee.com/fizzgate/fizz-gateway

入門教程:https://www.fizzgate.com/fizz/guide/GettingStarted/


作者:lancer