






關鍵詞:權限管理;統一認證;RBAC;OAuth 2;信息系統
0 引言
隨著信息技術的不斷發展,機構內部應用系統的數量和復雜性不斷增加,功能日益復雜,涉及的用戶角色也越來越廣泛。在這些系統中,對用戶權限的統一化、精細化管理,保障系統安全性和數據完整性成為亟待解決的問題[1]。
傳統的權限管理系統要求開發者手動處理每個資源的訪問控制,缺乏對多應用權限的統一管理,使得工程處理非常煩瑣且效率低下,導致延長開發周期,增加開發成本。用戶需要在多個系統中重復登錄,導致用戶體驗不佳且存在安全隱患。系統之間的權限認證和用戶信息同步存在障礙,影響了企業內部信息流暢度和工作效率。
為解決上述問題,本文基于角色的訪問控制模型(Role-Based Access Control,簡稱RBAC) [2],使用Spring Security、OAuth2、JWT等技術框架,設計研發了面向多應用的按鈕級權限管理與用戶統一認證系統。該系統旨在為機構提供一種統一、靈活、高效的權限管理與用戶認證解決方案。開發者可通過配置方式實現對系統級、菜單級、按鈕級等資源的訪問控制,根據具體業務需求精確控制用戶對系統功能的訪問權限,有效降低潛在的安全風險,并提高機構內部應用系統的安全性和管理效率。同時,系統實現了用戶在多個系統中的單點登錄與不同系統間的權限認證和用戶信息同步[3],提高用戶體驗和工作效率,確保企業內部信息的安全性和一致性。
1 系統整體設計
該系統采用Spring Security、JWT、OAuth2等技術架構組件,使用MySQL作為數據存儲服務器,Redis作為緩存數據服務器;與業務系統通過API方式進行權限驗證,系統的整體業務架構如圖1所示。本文的論述重點是多業務系統的按鈕級權限管理以及用戶統一認證功能的實現。結合圖1,下面分別對權限管理與用戶統一認證的流程進行闡述。
1.1 用戶統一認證
1) 業務系統前端請求業務系統后端接口,業務后端攔截請求,調用系統中認證模塊接口進行權限檢查。如發現token無效或已過期,返回未登錄信息給業務后端,業務后端將信息返回給業務前端,業務前端攜帶應用信息(如:client_id、response_type、redi?rect_uri) 跳轉到系統的統一登錄界面。
2) 進入統一認證登錄界面后,登錄頁自動在re?quest header 中攜帶tokenForCode 請求授權碼接口。
初次登錄用戶須在登錄頁輸入用戶名/密碼,登錄頁再次發送請求到系統后端。后端校驗clientId是否存在、用戶名/密碼是否正確、當前用戶是否被允許訪問當前client_id的應用。認證通過會生成一個授權碼code,同時在response header中返回一個tokenForCode 用于維持用戶名/密碼的登錄狀態[4]。登錄頁將token?ForCode保存下來以備其他業務系統自動登錄,同時,將code拼接到redirect_uri中并重定向回redirect_uri。
3) 登錄認證通過后回到業務系統redirect_uri,業務系統取出code 并攜帶client_id、code 值、grant_type 向業務系統后端申請token。業務系統后端將接收的參數以及保存在后端的client_secret拼接到URL中,向系統認證模塊申請token。
4) 系統后臺校驗code有效性(僅可使用1次)、cli?ent_id和client_secret。校驗通過則簽發JWT token(to?ken payload里聲明了username、user_uuid、client_id、當前token可訪問的業務系統集合aud字段等信息)。
5) 業務后端接收到系統認證模塊簽發的token并返回給業務前端,業務前端獲取token后進行業務接口調用,業務后端攔截請求,向系統認證模塊請求進行token校驗、權限檢查。
6) 業務系統B前端請求對應后端接口,其后端同樣攔截請求,向系統認證模塊進行token校驗、權限檢查,返回未登錄信息。該業務后端接收到信息返回給業務B前端,業務B前端重定向到系統登錄界面。由于業務系統A 已經登錄,登錄頁自動攜帶token?ForCode 請求code,同時重定向回業務系統B 前端。業務B無須輸入用戶名/密碼即完成了登錄過程,獲取到授權碼code,后續完成與業務A相同的其他流程。
1.2 權限管理
1) 業務系統后端攔截業務前端界面請求,獲取當前請求的地址(例如/user/search) 和HTTP 方法http?Method(POST) 。后端查詢獲取被訪問接口在系統權限管理模塊注冊的資源ID resourceId(例如:dciiadmin-server) 和access_token,請求系統權限管理模塊權限驗證接口。
2) 系統權限管理模塊根據resourceId查詢出當前業務系統的路徑匹配規則集,找到當前接口的認證規則authentication_type。若當前接口不鑒權(authentica?tion_type為anonymous) ,則直接通過權限檢查;若需要鑒權則取出請求頭里的access_token,校驗token是否被篡改[5],解析其中聲明的信息(例如:username、aud、authorities) 。
3) 根據username查詢緩存數據庫Redis。如查詢結果為空,則當前token已過期;如有值且兩個token相等,則表示token可用,同時將當前token有效期自動延期。如聲明信息中有aud字段,且傳來的resour?ceId與aud字段值不相等,則返回權限不足提示。
4) 系統權限管理模塊提供按鈕權限獲取接口。業務系統在前端界面初始化時調用此接口,鑒權通過后,按鈕獲取接口會返回業務系統當前界面的按鈕顯示信息。
2 系統功能設計與實現
本系統的功能設計采用基于角色的訪問控制模型(RBAC) 。在微服務架構下,應用Hibernate框架嵌入SpringBoot框架中,同時應用Spring Security+JWT實現系統的權限管理功能,應用OAuth框架實現系統的用戶統一認證功能。系統將用戶關聯角色,角色關聯權限,權限關聯應用資源,從而實現賦予用戶相應資源的權限[6]。如圖2所示,本系統由用戶管理、角色管理、權限管理、應用管理、統一認證等模塊組成。
2.1 應用管理
應用指接入該系統的其他業務系統。應用管理功能包括應用列表、添加編輯應用、頁面管理、按鈕管理、接口管理等功能。
應用列表展示接入該系統的其他業務系統信息。用戶可通過應用列表查看和編輯應用詳細信息,設置應用圖標、應用狀態,獲取應用ID、訪問密鑰,配置應用前后端訪問路徑。如圖3所示。
用戶完成應用注冊后,可通過頁面管理和接口管理分別配置相關的頁面和接口信息。頁面管理功能支持手動添加和JSON導入兩種方式添加應用下的頁面資源信息,同時提供編輯和下載原始JSON的功能。頁面信息包括id、path、name、component、redirect、meta 等屬性,前端框架通過獲取頁面信息組織頁面的層級結構。當前端已根據需求將各種組件組成應用后,需要將系統組件映射到路由上,而這些頁面信息即為組成路由表的關鍵屬性。
在大多數后臺管理系統中,都需要導航菜單對頁面進行導航。因此,路由表不僅決定了系統頁面的映射關系,還控制著菜單的排列順序和層級結構。此外,通過接收路由元信息meta屬性,可實現將任意信息附加到路由上,如菜單名稱、菜單圖標等。頁面管理如圖4所示。
頁面結構配置完成后,用戶可以通過按鈕管理功能配置頁面中的按鈕信息。按鈕配置信息包括編碼、說明,前端應用通過編碼信息定位頁面中的按鈕。如圖5所示。
頁面信息配置完成后,用戶可通過接口管理功能設置應用下的接口信息。接口信息包括所屬應用、匹配規則、規則說明、HTTP方法、認證類型以及排序等信息。服務端應用通過接口信息匹配被訪問的接口,服務端對用戶接口權限的鑒權見系統整體設計中的權限管理部分。
2.2 權限管理
權限管理用于實現業務系統應用功能的合理有序組合。權限管理功能包括權限列表、添加編輯權限、頁面權限、按鈕權限、接口權限。權限列表展示系統中的全部權限信息,并提供新增編輯權限入口。
頁面權限管理通過應用設置的頁面結構,為用戶提供設置頁面在某一權限下是否可見的功能。按鈕權限管理則通過頁面中設置的按鈕信息,來設置按鈕在某一權限下是否可見。如圖6所示。
接口權限管理通過應用設置的API信息,提供用戶設置接口在某一權限下是否有權訪問以及鑒權方式。如圖7所示。
2.3 角色管理
角色是對權限的組合,通過設置用戶角色實現對用戶的權限授予[7]。角色管理功能包括角色列表、添加角色、權限設置。角色列表展示系統中的全部角色信息,并提供新增編輯角色入口。
在角色管理中設置權限時,系統分為頁面權限和接口權限兩部分。頁面權限設置專注于業務系統的功能界面、按鈕的訪問控制設置。接口權限以單個API為粒度設置某一角色下接口的訪問控制。
2.4 用戶管理
用戶管理提供用戶信息的展示,用戶注冊、編輯、禁用功能。在用戶注冊時,系統管理員可根據用戶需求設置用戶角色,角色可以是單一角色,也可以是多個角色。用戶注冊時提供的用戶名、手機號碼、郵箱均可作為登錄系統時的用戶賬號。
2.5 統一認證
用戶統一認證包括登錄配置和用戶登錄界面。在登錄配置模塊,用戶可以配置系統的登錄界面。配置完成后,通過地址訪問用戶登錄界面,輸入用戶信息后,經過系統的統一認證完成用戶登錄操作[8]。統一認證的詳細過程見系統整體設計中的統一認證模塊。
3 結論
本系統基于RBAC 模型,結合Spring Security、OAuth2、JWT等技術框架,設計并實現了面向多應用的按鈕級權限管理與用戶統一認證系統。通過統一管理用戶權限,實現了對系統級、菜單級、按鈕級等資源的精細化訪問控制,提高了系統的安全性和管理效率。同時,實現了用戶在多個系統中的單點登錄與權限認證、用戶信息同步,優化了用戶體驗和工作效率。本系統為機構提供了一種統一、靈活、高效的權限管理與用戶認證解決方案,為信息系統的安全和發展提供了有力支持。