kong的介紹
kong基于nginx開發(fā)的API Gateway(可以認(rèn)為是一個OpenResty應(yīng)用程序)临梗,可以方便的橫向擴展度陆,底層使用Apache Cassandra或PostgreSQL數(shù)據(jù)庫。開發(fā)者可以方便的添加已定義的插件,甚至可以自己開發(fā)插件并使用绪氛,來達到代理、負載均衡涝影、健康檢查枣察、日志、登錄等功能燃逻。 --https://konghq.com/about-kong/
kong的服務(wù)架構(gòu)
請求流程:
- 瀏覽器訪問域名序目,經(jīng)過DNS解析到kong的地址
- kong根據(jù)域名識別到相應(yīng)服務(wù)。 (除了kong的每個服務(wù)需要被分配一個域名伯襟,域名都指向kong的ip地址)
-
kong對此服務(wù)配備的插件(限流猿涨、認(rèn)證、負載均衡)校驗
- 校驗成功姆怪,獲取服務(wù)相應(yīng)資源
oauth2.0的介紹
OAuth在"客戶端"(瀏覽器)與"服務(wù)提供商"(接口服務(wù))之間叛赚,設(shè)置了一個授權(quán)層。"客戶端"不能直接登錄"服務(wù)提供商"稽揭,只能登錄授權(quán)層俺附,以此將用戶與客戶端區(qū)分開來。"客戶端"登錄授權(quán)層以后淀衣,"服務(wù)提供商"根據(jù)令牌的權(quán)限范圍和有效期昙读,向"客戶端"開放用戶儲存的資料。
- A. 向客戶端提供用戶名和密碼
- B. 客戶端將用戶名和密碼發(fā)給認(rèn)證服務(wù)器唠叛,向后者請求令牌
- C. 認(rèn)證服務(wù)器確認(rèn)無誤后,向客戶端提供訪問令牌
kong oauth2插件的使用
kong的核心概念:
- upstream:相當(dāng)于nginx的upstream
- target:相當(dāng)于nginx中upstream的server
- service: 相當(dāng)于nginx的server沮稚,可以指向到一個upstream
- route: 相當(dāng)于nginx中service的location
- plugin:插件艺沼,可以配置到service或者route甚至所有服務(wù)
- consumer:用戶
- certificate:憑證
對于kong的oauth插件來說,consumer相當(dāng)于oauth中的client蕴掏。
這里kong是不提供用戶校驗的障般,所以我們需要自己開發(fā)一個backend來做用戶的信息校驗。
圖例:(線段是對應(yīng)顏色節(jié)點的行為)
- 綠色client application: 客戶端盛杰,前端項目
- 黃色kong: kong / kong dashboard(kong api的GUI項目)
- 藍色webapp backend: 待開發(fā)的用戶驗證服務(wù)挽荡,需要連接用戶數(shù)據(jù)庫
- 紫色resource service: 資源服務(wù)
前端請求流程(即上圖client application的三條線段):
用戶注冊也是訪問backend服務(wù)
- 請求backend的域名,請求內(nèi)容是username和password即供,獲取到token及refresh token定拟。
- 請求資源服務(wù)的域名,請求攜帶token逗嫡,并獲取到數(shù)據(jù)資源
- token過期后青自,刷新token