公共平臺服務治理與鑒權

  • 問題
  • 解決問題
    • 鑒權
    • 注冊
    • 管理
  • 總結

聊一聊最近了解的公司服務治理平臺,主要是思想,理念,而不是一種技術或框架。整個平臺設計,融入了OAUTH2認證,融入了微服務思想,幫助公司各系統在復雜的IT架構下,實現一種便捷統一的調用方案,同時完成調用的管理(監控、注冊、鑒權等)。

問題

一種思想或理念的出現,是否有價值,我認為主要在于它實際解決了哪些問題。基于這個價值觀,我們先看看,當一個公司有成百上千個系統時,會有哪些問題?
pi如:

  1. 接口訪問有沒有鑒權?如何鑒權?這個話題很大,歸根揭底就是,要讓提供方知道調用方是誰(身份),并且同意調用(授權)。
  2. 想看看系統間調用關系,得查代碼或文檔
  3. 某個系統異常,怎么評估影響范圍?誰調了它,它調了誰?
  4. 某系統調用量如何?負載均衡之前需不需要流量控制?

解決問題

服務治理平臺,目標就是把所有系統的所有接口,管理起來,對調用方進行鑒權,對提供方開放接口注冊,運營來統一管理授權。最終,解決權限問題,監控系統間調用關系,實現公司級的服務治理。

鑒權


開放平臺,很重要的一個點,就是對訪問進行權限控制。比較老的Basic Auth認證方式,在請求中加入用戶名和密碼,由服務端來進行鑒權。目前較通用的OAuth認證,通過Access Token完成授權與認證,具體不在詳述,目前我們使用OAUTH2。
其實,抽象來看,鑒權主要圍繞兩個問題,1,你是誰,2,同意不同意你調。
圍繞這兩個問題,我們來捋一捋怎么設計,來完成這兩個事:
  1. 首先,得有個系統,讓調用方注冊用戶,申請訪問接口等,暫且命名為portal
  2. 其次,提供方可以在平臺注冊自己的接口
  3. 平臺管理人員,一般是運營同事,得有個系統可以查看注冊接口、訪問申請、注冊用戶、發布到公共平臺等等,并完成對各種訪問的授權,暫且命名為admin
  4. 另,既然使用了oauth2,就得有個取token的系統,暫且命名為oauth
  5. 最后,得有個對外的統一入口吧(即公共平臺),暫且名為open

整個調用鑒權流程,如下:

1344248-20180414135421175-1155357141.png


1. 調用方注冊用戶
2. protal返回用戶id和secret
3. 管理員,審核用戶(你是誰?)
4. 用戶id通過審核
5. 通過審核的用戶id申請相關訪問資源
6. 管理員,授權資源訪問(同不同意你調?)
7. 資源申請通過
8. 根據用戶id和secret到oauth取token
9. 到公共平臺(open)訪問你申請的資源,需要帶上token
10. open對token進行鑒權

注冊

提供方系統注冊接口到公共平臺,有很多種方式,目前,我們主要使用兩種方式:

  1. 系統內置平臺注冊SDK,在代碼中實現接口注冊
  2. 系統調用平臺開放注冊接口,通過HTTP請求完成注冊。這種方式,提供方本身又成了公共平臺的調用方,需要走一遍上面的鑒權過程=。=

整個注冊流程比較簡單,如下:

1344248-20180414135432341-567661999.png

管理

基于以上分析,有個提供方并在平臺注冊了接口,有了調用方并在平臺獲得了授權,那么整個管理平臺的基本職能就可以推斷出來:

  1. 服務注冊、維護
  2. 消費維護、授權
  3. 應用申請授權、接口發布
  4. 系統運行態數據監控

總結

以上,僅僅是一個梗概,認識一個東西,我喜歡先看輪廓,在扣細節。
扣個細節,比如,授權單位如果是個接口的話,我們公司將近2w個openAPI接口,授權起來比較瑣碎,此時可以用分組來進行管理。如某個小系統的所有接口放到一個組里面,調用方通過申請組資源的訪問,來完成對組內接口的訪問。
在比如,授權時可以設置用戶token的時效,過期token失效,需要重新取token。時效設置多久合適,大家可以另行分析。我們系統是金融領域=。=

以上,感謝觀看,點個贊,我覺得不過分。

轉載于:https://www.cnblogs.com/lknny/p/8831667.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250525.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250525.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250525.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 試題五

Java 試題五 1、運行時異常與一般異常有何異同 答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,…

【初賽】概率與期望學習筆記

一、事件 1、單位事件、事件空間、隨機事件 在一次隨機試驗中可能發生的不能再細分的結果被稱為單位事件,用 $ E $ 表示。在隨機試驗中可能發生的所有單位事件的集合稱為事件空間,用 $ S $ 來表示。例如在一次擲骰子的隨機試驗中,如果用獲得的…

koa --- 擴展hbs方法

moment 是一款常用的處理時間的庫傳入 1999-03-01T16:00:00.000Z YYYY/MM/DD輸出 1999/03/02 const moment require(moment);const myDatePattern (date, pattern) >{return moment(date).format(pattern) } 給擴展hbs功能. 放在 utils/helper.js 下方便管理 const hb…

go系列 鎖的初識

Go基礎之鎖的初識 當我們的程序就一個線程的時候是不需要用到鎖的,但是通常我們實際的代碼不會是單個線程的,所有這個時候就需要用到鎖了,那么關于鎖的使用場景主要涉及到哪些呢? 當我們多個線程在讀相同的數據的時候則是需要加鎖…

Java 試題六

Java 試題六 1、Collection 和 Collections的區別 答:Collection是集合類的上級接口,繼承與他的接口主要有Set 和List。Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。 2、Set里…

node --- 實現session認證.

跨域認證的問題 互聯網服務離不開用戶認證.一般流程如下: 1、用戶向服務器發送用戶名和密碼。 2、服務器驗證通過后,在當前對話(session)里面保存相關數據,比如用戶角色、登錄時間等等。 3、服務器向用戶返回一個 session_id&…

回信,我的好朋友王一涵

好了,不拖了,沏一杯咖啡,把信寫完。因為再拿好吃的賄賂你,賄賂不起了—— 一個胖子可以吃窮我的。 王一涵凹,不得了不得了。微胖肉質女生,關于體重我就不提了,只有我知道嘿嘿嘿,在我…

編寫基于Property-based的單元測試

編寫基于Property-based的單元測試 作為一個開發者,你可能認為你的職責就是編寫代碼從而完成需求。我不敢茍同,開發者的工作是通過軟件來解決現實需求,編寫代碼只是軟件開發的其中一個方面,編寫可靠的軟件和產出有價值的代碼更加重…

樹鏈剖分+線段樹 單點修改 區間求和 模板

馬上要去西安打邀請賽了&#xff0c;存下板子 首先是vector存圖的&#xff1a; #include<bits/stdc.h> using namespace std; #define ll long long #define lson l,m,rt<<1 #define rson m1,r,rt<<1|1 #define mid int m (l r) >> 1 const int M …

koa --- seesion實現登錄鑒權

koa vue session 實現一個簡單的登錄邏輯 /login component/login-session.html <!DOCTYPE html><head><script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src"https://unpkg.com/axios/dist/axios.…

BZOJ2216: [Poi2011]Lightning Conductor

第一道此類的題&#xff0c;所以這是一篇假的博客&#xff0c;定理不會證明不理性 也不一定對 我是從這篇博客看的 很顯然是讓你求 p[i] max{a[j] sqrt(i - j)} - a[i] 就是 max{a[j] sqrt(|i - j|)} 這是一個 1D/1D 動態規劃 考慮對于絕對值的情況不好做&#xff0c;那就…

HNOI2018游記

HNOI2018游記 day 0 上午稍微寫了下題保持手感,然后看了一下套路,感覺不會的還是不會. 下午去劃水在湖面上被吹成傻逼... 感覺沒有聯賽前那么緊張了,應該是聯賽考掛了的原因吧.. day1 早上大概7:40就到了考場,和同學聊了一會兒天,看了看配置就進去了. 進去之后敲配置沒有一遍對…

Java 試題七

Java 試題七 1、java中有幾種類型的流&#xff1f;JDK為每種類型的流提供了一些抽象類以供繼承&#xff0c;請說出他們分別是哪些類&#xff1f; 答&#xff1a;字節流&#xff0c;字符流。 字節流繼承于InputStream、OutputStream&#xff0c; 字符流繼承于Reader、Writer…

flume快速入門及應用

? Flume 簡介? Flume 的安裝與配置? Fumne 部署   Flume 是 Cloudera 提供的一個高可用、 高可靠、 分布式的海量日志采集、 聚合和傳輸的系統。 Flume 支持定制各類數據源如 Avro、 Thrift、 Spooling 等。 同時 Flume提供對數據的簡單處理&#xff0c; 并將數據處理結果…

koa --- jwt實現最簡單的Token認證

HTML 有如下html: 先看代碼后挑重點來說明: <!DOCTYPE html><head><script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src"https://unpkg.com/axios/dist/axios.min.js"></script></…

python基礎之常用的高階函數

前言 高階函數指的是能接收函數作為參數的函數或類&#xff1b;python中有一些內置的高階函數&#xff0c;在某些場合使用可以提高代碼的效率&#xff0e; map() map函數可以把一個迭代對象轉換成另一個可迭代對象&#xff0c;不過在python3中&#xff0c;結果都是一個map對象&…

Java 試題八

Java 試題八 1、java中有幾種方法可以實現一個線程&#xff1f;用什么關鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用&#xff1f; 答&#xff1a;有兩種實現方法&#xff0c;分別是繼承Thread類與實現Runnable接口&#xff1b;用synchronized關鍵字修飾同步方法…

bzoj2957 奧妙重重的線段樹

https://www.lydsy.com/JudgeOnline/problem.php?id2957 線段樹的query和update竟然還可以結合起來用&#xff01; 題意&#xff1a;小A的樓房外有一大片施工工地&#xff0c;工地上有N棟待建的樓房。每天&#xff0c;這片工地上的房子拆了又建、建了又拆。他經常無聊地看著窗…

koa --- 使用Github OAuth登錄

準備 登錄github選擇右上角的setting Developer settings -> OAuth Apps -> Register a new application 填入基本信息 點擊綠色的按鈕,可以看見 client_id 和 client secret 理清思路: 開始時,一個登錄的連接,點擊連接.后臺監聽登錄(/login)路由,然后重定向到github…

[數據結構] - ArrayList探究

一 概述 ArrayList可以理解為動態數組&#xff0c;與java的數組相比&#xff0c;它的容量能動態曾長&#xff0c;ArrayList是List接口的可變數組的實現&#xff0c;允許包括null值在內的所有元素。除了實現List接口外&#xff0c;此類還提供一些方法來操作內部用來存儲列表的數…