企業級微服務架構統一安全認證設計與實踐!

2021-10-20 01:19:40 字數 3432 閱讀 6119

authorization server:認證伺服器,即服務提供商專門用來處理認證的伺服器。

resource server:資源伺服器,即服務提供商存放使用者生成的資源的伺服器。它與認證伺服器,可以是同一臺伺服器,也可以是不同的伺服器。

當企業應用系統逐漸增多後,每個系統單獨管理各自的使用者資料容易形成資訊孤島,分散的使用者管理模式阻礙了企業應用向平台化演進。當企業的網際網路業務發展到一定規模,構建統一的標準化賬戶管理體系將是必不可少的,因為它是企業網際網路雲平台的重要基礎設施,能夠為平台帶來統一的帳號管理、身份認證、使用者授權等基礎能力,為企業帶來諸如跨系統單點登入、第三方授權登入等基礎能力,為構建開放平台和業務生態提供了必要條件。

單體應用體系下,應用是乙個整體,一般針對所有的請求都會進行許可權校驗。請求一般會通過乙個許可權的***進行許可權的校驗,在登入時將使用者資訊快取到 session

中,後續訪問則從快取中獲取使用者資訊。

隨著 restful api、微服務的興起,基於 token 的認證現在已經越來越普遍。token 和 session id 不同,並非只是乙個

key。token 一般會包含使用者的相關資訊,通過驗證 token 就可以完成身份校驗。

基於 token 認證的優勢如下:

效能較好,因為在驗證 token 時不用再去訪問資料庫或者遠端服務進行許可權校驗,自然可以提公升不少效能。

支援移動裝置,支援跨程式呼叫,cookie 是不允許垮域訪問的,而 token 則不存在這個問題。

通過標準安全認證流程,異構系統或跨服務間能夠靈活地實現指定功能部件或服務的整合、統一的安全認證。

使用者輸入登入資訊(或者呼叫 token 介面,傳入使用者資訊),傳送到身份認證服務進行認證(身份認證服務可以和服務端在一起,也可以分離,看微服務拆分情況了)。

身份驗證服務驗證登入資訊是否正確,返回介面(一般介面中會包含使用者基礎資訊、許可權範圍、有效時間等資訊),客戶端儲存介面,可以儲存在 session 或者資料庫中。

客戶端將 token 放在 http 請求頭中,發起相關 api 呼叫。

被呼叫的微服務,驗證 token 許可權。

服務端返回相關資源和資料。

獲取憑證, 第三方應用客戶端使用客戶端編碼/安全碼、資源所有者使用者名稱/密碼等證件資訊從授權伺服器上獲取access token資源訪問憑證。

登入授權,客戶端攜帶access token憑證訪問伺服器資源,資源伺服器驗證token、第三方應用憑證資訊、資源所有者user合法性,通過token讀取資源所有者身份資訊(user) 載入資源所有者的許可權項執行登入。

訪問鑑權,第三方應用客戶端訪問服務端資源,系統驗證訪問者access token合法性、許可權資訊,驗證憑證(access token)正確,此時資源伺服器就會返回資源資訊。

憑證續約,access token訪問憑證過期需要進行憑證續約,重新整理token憑證有效期。

系統授權採用oauth2開放式授權標準密碼模式。

token採用jwt標準。

1. oauth開放授權

oauth(open

authorization,開放授權)是為使用者資源的授權定義了乙個安全、開放及簡單的標準,第三方無需知道使用者的賬號及密碼,就可獲取到使用者的授權資訊。

主要的四種授權方式:

2. json web token (jwt)

json web token (jwt), 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準((rfc

7519).該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入(sso)場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取資源,也可以增加一些額外的其它業務邏輯所必須的宣告資訊,該token也可直接被用於認證,也可被加密。

1. 系統授權

第三方應用客戶端使用客戶端編碼/安全碼、資源所有者使用者名稱/密碼等證件資訊從授權伺服器上獲取access token資源訪問憑證。

系統授權頒發給客戶應用access token

2. 系統鑑權

客戶端攜帶access

token憑證訪問伺服器資源,資源伺服器驗證token、第三方應用、資源所有者user合法性,通過token讀取資源所有者身份資訊(user)

載入資源所有者的許可權執行登入。

系統驗證訪問者access token合法性、許可權資訊,驗證憑證(access token)正確,此時資源伺服器就會返回資源資訊。

3. 憑證續約
access token訪問憑證過期需要進行憑證續約,重新整理token憑證有效期。

1. 授權憑證

獲取授權憑證,校驗客戶端身份資訊、校驗資源所有者身份資訊,下發token憑證。

客戶端編碼/安全碼需要第三方應用到系統註冊審核通過後生成。

2. 授權憑證續約

獲取續約授權憑證,校驗客戶端身份資訊、校驗refreshtoken憑證,下發token憑證。

tcp 三次握手、四手揮手,這樣說你能明白吧!

netflix 微服務架構設計解析

長沙社群**獨角獸《興盛優選》 18k 面試題記錄,已拿offer!

單執行緒的 redis 還有事務嗎?

實現微服務統一認證鑑

參考 spring cloud實戰 最七篇 spring cloud gateway spring security oauth2整合統一認證授權平台下實現登出使jwt失效方案 oauth 2.0 是目前最流行的授權機制,用來授權第三方應用,獲取使用者資料。阮一峰 oauth 2.0 的乙個簡單解釋...

微服務鑑權 東華統一認證服務平台

01 設計理念 定位 服務於大資料平台的統一使用者認證鑑權資料中心 目標 實現標準化的介面接入,滿足各個單位 各個應用系統隨時 便捷 安全的接入認證平台,實現所有應用的統一認證鑑權服務 統一使用者管理服務 統一許可權管理服務 統一門戶訪問服務,達到協同 共享 快捷 高效的執行效果。02 產品架構 0...

企業級微服務API閘道器Fizz 常用外掛程式介紹

社群貢獻的外掛程式在 下,一般以 fizz plugin 或 fizz plugin 命名,下面介紹一些常用的外掛程式。用例 若閘道器 的後端介面響應 json 資料 然後需要對手機號作掩碼處理,則可為介面的路由配置外掛程式 配置後,請求介面時帶 sourcetype 請求頭,其值為 ch1,收到響...