1. 程式人生 > >Bumblebee微服務閘道器之請求統一驗證

Bumblebee微服務閘道器之請求統一驗證

對於微服務閘道器來說,統一請求驗證是一個比較重要和常用的功能,通過閘道器驗證後臺服務就無須關注請求驗證;對於多語言平臺的服務而言制定驗證方式和變更驗證配置都是一件比較繁瑣和工作量大的事情。Bumblebee提供JWT驗證外掛,只需要簡單配置即可讓閘道器實現請求統一驗證。

引用外掛

Bumblebee中使用JWT需要引用兩個外掛,分別是Bumblebee.ConfigurationBumblebee.Jwt。載入啟動後就可以通過管理工具進行外掛配置.

            g = new Gateway();
            g.HttpOptions(
                o =>
                {
                    o.Port = 80;
                    o.LogToConsole = true;
                    o.LogLevel = BeetleX.EventArgs.LogType.Error;
                });
            g.Open();
            g.LoadPlugin(
                typeof(Bumblebee.Configuration.Management).Assembly,
                typeof(Bumblebee.Jwt.JwtPlugin).Assembly
               );

如果不想自己編寫程式碼可以下載編譯的執行包 Bumblebee1.0.6這個版本已經加入了JWT

外掛管理

執行程式後進行配置管理工具的外掛管理頁面,可以看到JWT外掛,預設是未啟用。 

image

資料庫配置

Bumblebee.Jwt的使用需要用到資料庫,主要用於接管登陸並生成Token用。外掛預設支援三種資料庫,分別是:mssql,mysqlpgsql.相關登陸資訊表必須包括以下三個欄位:_name(使用者名稱),_role(角色)和_password(密碼).mysql指令碼如下:

CREATE TABLE `_users` (
  `_name` varchar(50) NOT NULL,
  `_password` varchar(45) DEFAULT NULL,
  `_role` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

JWT配置

外掛使用需要進行配置,可以通過點選外掛進入相關配置頁面。

image

示例配置如下:

{
    "Key": "ExxUqmeDKnAk1eMHV02ICJkwp82RsleM887yRnQS3Gg8OHCxWsLPlzCEAJActCo6y6Mae26JeGDFx7aYkeP7Efl6yh/d1q3XYRCdDLLGbz+kt3vR92H6s78P7JILNgZMiO6XoekKXfT2Qxle7Gyu/1d39NloKhqXgBdgzeobyyo=",
    "MD5": false,
    "DBType": "MYSQL",
    "ConnectionString": "Server=192.168.2.19;Database=world;Uid=root;Pwd=123456;",
    "VerifyPaths": [
        "^/api.*"
    ],
    "Table": "_users",
    "TokenTimeOut": 200,
    "RemoveHeaders": [
        "Cookie"
    ],
    "LoginMaxRps": 200
}
  • Key JWT處理金鑰

  • MD5 是否要把密碼轉MD5再查詢

  • DBType 資料型別,分別:MSSQL,MYSQL,PGSQL

  • ConnectionString 資料庫連線字串

  • VerifyPaths 需要驗證的路徑列表,正則表示式。

  • Table 使用者表名稱

  • TokenTimeOut 憑證超時時間,單位是分鐘

  • RemoveHeaders轉發時移走頭列表

  • LoginMaxRps登陸限制,每秒允許併發數,如果設定成零則不限制

JWT相關訪問介面

  • http://host/__system/jwt/login?name=henry&pwd=123456&cookie=true登陸獲取Token訪問Url,cookie引數表示返回Token並寫入Cookie

  • http://host/__system/jwt/singout清除Cookie相應的Token資訊.

請求Token配置

如果在呼叫登陸的時候寫入了Cookie那在請求過程中不再需要配置相關Token資訊.在其他呼叫方式下需要把返回的Token配置到請求頭的Authorization上。

應用示例

直接下來用aspcore編寫一個webapi服務然後用Bumblebee進行一個代理並設定安全控制訪問。

    public class ApiController : Controller
    {
        // GET: /<controller>/
        public IActionResult Index()
        {
            return new ContentResult { Content = $"{DateTime.Now}|name:{Request.Headers["jwt_user"]};role:{Request.Headers["jwt_role"]}" };
        }

        public IActionResult Hello(string name)
        {
            return new ContentResult { Content = $"hello {name} {DateTime.Now}|name:{Request.Headers["jwt_user"]};role:{Request.Headers["jwt_role"]}" };
        }
    }

服務啟動的地址是http://localhost:58387/,在閘道器配置相關路由

image

JWT驗證關閉後可以正常訪問服務

image

由於沒有經過閘道器的驗證,所以jwt_userjwt_role資訊為空。如果開啟JWT驗證又會怎樣呢?

image

下面是開啟的執行結果

image

由於請求沒有憑證資訊,所以被閘道器攔截並返回了相應的錯誤。接下來先訪問一下登陸介面並獲取憑證http://localhost/__system/jwt/login?name=henry&pwd=123456&cookie=true,當憑證獲取後就可以訪問服務,並在服務中可以正常獲取jwt_userjwt_role資訊。

image

相關推薦

Bumblebee服務請求統一驗證

對於微服務閘道器來說,統一請求驗證是一個比較重要和常用的功能,通過閘道器驗證後臺服務就無須關注請求驗證;對於多語言平臺的服務而言制

Spring Cloud Zuul API服務請求路由

目錄 一、Zuul 介紹 二、構建Spring Cloud Zuul閘道器 構建閘道器 請求路由 請求過濾 三、路由詳解

Bumblebee服務統一請求驗證

對於微服務閘道器來說,統一請求驗證是一個比較重要和常用的功能,通過閘道器驗證後臺服務就無須關注請求驗證;對於多語言平臺的服務而言制定驗證方式和變更驗證配置都是一件比較繁瑣和工作量大的事情。Bumblebee提供JWT驗證外掛,只需要簡單配置即可讓閘道器實現請求統一驗證。 引用外掛 Bumblebee中使用

Choerodon 的服務路(二):服務

本文是 Choerodon 豬齒魚微服務系列文章的第二篇。在《Choerodon的微服務之路(一):如何邁出關鍵的第一步》中,我們瞭解到在微服務架構中,一個完整的單體應用被拆分成多個有著獨立部署能力的業務服務,每個服務可以使用不同的程式語言,不同的儲存介質,來保持最低限度的集中式管理。本篇將

Spring CloudZuul(一):編寫Zuul服務

主題 編寫Zuul微服務閘道器 前言 閘道器的概念大家可以點選這裡瞭解,或者等待米兜好文章更新。本例項主要是將Zuul註冊到Eureka Server上,並做一些案例測試。 內容 1.新建專案 cloud-register-gateway-zuul微服務 2.引入依賴

使用Bumblebee搭建服務

主要功能 服務管理,可以針對業務需要可以新增管理相應的服務應用 動態路由管理,可以針對不同請求路徑制定不同的負載方案;負載的方案調整都具備熱更能力,並不需要重啟即可完成相關調整。 負載策略多樣性,可以針對不同的路徑和服務制定不同的負載方式,包括有:動太一致性,權重負載和請求限制等.

.net core中使用Bumblebee架設服務

Bumblebee是款基於.net core開發開源的http服務閘道器,經過最近版本的完善在功能足以滿足作為微服務閘道器的需要。在微服務閘道器功能中它提供了應用服務負載,故障遷移,安全控制,監控跟蹤和日誌處理等;不僅如此它強大的外掛擴充套件功能,可以針對實業務情況進行不同的相關外掛應用開發滿足實際情況的需要

服務springcloud—服務、Zuul簡介和Zuul服務

使用zuul構建微服務閘道器 為什麼要使用微服務閘道器 雖然微服務架構已經初具雛形,但還有一些問題————不同的微服務 一般會有不同的網路地址,而外部客戶端(例如手機APP)可能還需 呼叫多個微服務接口才能完成一個業務需求。例如一個電影購票的 手機APP,可能會呼叫多個微服務介面,才

服務

微服務閘道器作用:   API閘道器:跨一個或多個內部API提供單個統一的API入口點。通常還包括限制訪問速率和有關安全性等特點。API閘道器可以為外部消費者提供統一的入口點,而與內部微服務的數量和組成無關。        API閘道器的作用:    &

服務從零搭建——(二)搭建api(不帶驗證

環境準備 建立空的core2.1 api專案  演示使用名稱APIGateWay  過程參考上一篇 完成後在appsettings.json 新增節點 "Setting": { "Port": "5000" } 搭建過程 新增檔案configuration.json

服務從零搭建——(六)ocelot配置追蹤功能

butterfly 準備工作 首先下載buterfly release版本  解壓並通過命令啟動:dotnet Butterfly.Web.dll --EnableHttpCollector=true 可以採用bat檔案的方式  cd C:\Users\Lenovo\Desk

SpringCloud Zuul配置 服務 詳解

目錄 筆者在,已經介紹瞭如何配置獨立的認證中心和SSO客戶端,以及完成配套的資源伺服器配置。但是,在實際生產環境中使用會存在一些安全問題。例如所有微服務的真實地址和使用的真實埠都被暴露給了使用者,容易被不法之徒進行非法攻擊,再對外服務時如果做隔離,對

用 http-proxy架設 Cmpage 的服務

Cmpage的微服務化          Cmpage前端是個典型的單頁結構,每個業務模組從後端返回的是HTML片段,然後進行組裝渲染。假設現在有3個團隊分別開發了使用者中心(UC),客戶管理系統(CRM),人事考勤系統(HR),每個系統會有若干業務模組,系統內外的資料有關

Hystrix斷路器在服務中的應用

前文回顧 在之前的一篇文章:微服務閘道器Zuul遷移到Spring Cloud Gateway,我們講解了如何從Zuul遷移到新的元件:Spring Cloud Gateway,以及擴充套件了微服務閘道器的功能,包括限流過濾器、斷路器過濾器等。然而很多讀者在使用的時候反饋,使用POSTMAN傳送GET請求測

SpringCloud(3) :服務(Zuul)

在一個實際業務當中通常都會呼叫多個服務介面,而每個服務介面的ip/埠or域名都不一樣,這樣在實際呼叫中會變得十分繁瑣,而且當服務介面ip/埠or域名修改後,業務系統也需要進行相應的修改,大大增加了開發維護成本,所以一般的做法都是在多個服務介面上游再新增一層,我們

LindDotNetCore~Ocelot實現服務

回到目錄 閘道器在硬體裡有自己的定義,而在軟體架構裡也有自己的解釋,它就是所有請求的入口,請求打到閘道器上,經過處理和加工,再返回給客戶端,這個處理過程中當然就是閘道器的核心,也是Ocelot的核心,我們可以把使用者授權,校驗,快取,認證等很多關注點在閘道器中實現! 定義 API閘道器是一個

使用 Node.js 搭建服務

目錄 Node.js 是什麼 安裝 node.js Node.js 入門 Node.js 應用場景 npm 映象 使用 Node.js 搭建微服務閘道器 什麼是微服務架構 使用 Node.js 實現反向代理 參考

服務解決方案和使用總結

一.什麼是閘道器 1.1 什麼是閘道器 API Gateway(APIGW / API 閘道器),顧名思義,是出現在系統邊界上的一個面向API的、序列集中式的強管控服務,這裡的邊界是企業IT系統的邊界,可以理解為企業級應用防火牆,主要起到隔離外部訪問與內部系統的作用。在微服務概念的流行之前,API閘道

八、Zuul構建服務

1、為什麼要使用微服務閘道器     1.1、沒有閘道器的話,存在的問題         客戶端要多次請求不同微服務,增加客戶端複雜性         存在跨域請求問題 &n

Spring Cloud【Finchley】-14 服務Zuul的搭建與使用

文章目錄 官方文件 Zuul概述 引入閘道器前後呼叫流程的變化 搭建單節點的Zuul Step1. 建立子Module microservice-gateway-zuul Step2. 新增maven依賴 Step3