曹凱 王嘉月
本文闡述了單點登錄系統的研究背景和意義,并對目前國內外常見的單點登錄技術解決方案進行研究和對比;介紹了如何將單點登錄技術運用于企業數字資源整合,解決多系統、多用戶登錄和維護的問題,并通過Java代碼實現單點登錄功能;認為該功能設計和流程規劃,在生產實踐中可以得到很好的驗證,可以應用于其他數字資源整合項目,用于滿足單點登錄業務需要。
隨著信息技術的不斷推廣,企業數字化轉型逐漸深入,解決各種業務問題的應用系統應運而生。大量采用browser/server架構的web應用系統的使用,使企業的業務應用系統已從原來的單一系統發展成多系統組合的web應用群。在多系統共存的情況下,對用戶而言能夠像訪問單個系統一樣訪問整體應用群,就要求能夠實現用戶一處登錄從而得到所有系統的信任進行訪問,即實現單點登錄Single Sign On(SSO)。
伴隨著企業信息化進程,應用系統的大量使用,不斷積累,在支撐業務需求形成了應用系統群的同時也形成了信息孤島,各種應用系統各自維護獨立的組織機構及用戶信息。為保證不同系統基礎信息的一致性,每一次組織內部的機構變動、人員調整都會產生大量的維護工作。而且由于應用系統開發廠商和上線時間的差異,同一用戶在不同系統中的登錄信息不盡相同,大量的登錄用戶名與密碼給用戶登錄操作帶來了不少麻煩與困難。通過構建企業單點登錄的SSO門戶系統對企業應用系統群進行整合。統一門戶是融合了業務目標和信息技術的綜合服務平臺,實現信息整合、用戶整合、應用整合。所謂用戶整合,是指通過統一的組織機構和用戶基礎數據管理功能,實現同類信息集中維護、同步管理。既避免相同數據多次維護,減少維護工作量,又能保持各系統中相同數據的一致性,避免維護不及時造成數據混亂。
同時,將多系統形成的應用群對用戶而言統一為整體應用,各應用系統可通過用戶令牌進行用戶身份識別,訪問不同應用與訪問單個系統一樣,用戶只需在門戶系統登錄一次,即可直接進入其他應用系統,無須重復多次登錄,明顯提升了用戶體驗。
(一)單點登錄的功能架構
要實現完整的單點登錄功能,主要解決存儲信任和驗證信任兩個要點,需要三部分的功能支持。
1.對基礎數據資源進行管理。建立統一管理用戶基本信息、組織機構信息的基礎數據中心,對待整合資源的基礎數據信息進行規范整合,對用戶人員調動、訪問權限分配以及組織機構變更進行協同管理。對允許接入單點登錄功能的各類應用系統基礎數據信息、接入方式與相關接口進行管理,實現統一調度。
2.對用戶基礎信息調整及組織機構變更的同步日志進行管理,通過相應的數據接口,支持數據同步服務和數據初始化功能。負責發起各應用系統之間同類基礎數據的抽取與推送,同時,針對同步日志執行情況進行實時跟蹤和監控,確保集中維護的用戶基礎信息和組織機構信息在各個應用系統中保持一致。
3.對用戶提供登錄和身份認證服務,用戶在門戶系統完成登錄用戶名密碼等安全認證信息校驗后,登錄成功,用戶與SSO中心建立全局會話,創建用戶授權令牌,根據用戶權限將授權令牌分發到相關子應用系統,用戶可以訪問已授權的相關子系統并以此令牌創建局部會話實現登錄,允許子應用系統查詢數據同步日志校驗用戶認證信息。
(二)實現單點登錄功能的業務流程
通過“抽取-整合-清理-推送”的過程完成各應用系統用戶基礎數據和組織機構信息的初始化,實現以統一門戶基礎數據為標準的基礎數據中心,通過同步保持門戶和各應用系統中用戶和組織機構信息一致,即可通過單點登錄功能進入應用系統,整個流程如圖所示。

用戶使用SSO系統指定的用戶名、密碼登錄門戶系統,獲得用戶令牌。同時,令牌存儲在令牌池,以備查詢。用戶從門戶進入各應用系統時,傳遞用戶令牌給應用系統,應用系統獲得令牌后,提交到門戶的認證接口進行認證。門戶系統根據應用系統提交的令牌到令牌池中查詢,返回用戶認證信息。應用系統獲得用戶信息后,完成用戶在本系統中的登錄,無須用戶再次登錄。身份驗證的數據交換過程在系統后臺完成,無頁面跳轉,無用戶操作。
用戶注銷后即時回收銷毀令牌池中的認證信息,統一終止用戶訪問服務。
本系統在IntelliJ IDEA 2020開發環境下開發,使用JDK1.8、Maven4.0,數據庫Mysql 5.7。
(一)用戶登錄控制類
從前端傳遞用戶登錄信息到登錄控制類,登錄控制類驗證登錄名與密碼是否正確,正確則創建用戶令牌,允許用戶登錄,否則返回錯誤信息。用戶令牌以JWT標準創建,生成帶有用戶信息的認證數據串,通過cookie保存,確保在進入其他應用系統時可快速獲取。用戶登錄后可根據其權限展示可訪問的系統資源。
(二)數據同步控制類
數據同步日志信息管理,瀏覽、維護日志信息,允許用戶執行刪除日志操作。管理人員通過檢查數據同步日志,可以確認數據同步執行情況。這里引入分頁類 PageHelper實現數據分頁功能。每次查詢數據只需要傳入當前頁碼和每頁數據量即可。
(三)數據同步實現類
按照同步日志,進行數據同步操作。響應應用系統數據同步請求,獲取該應用系統未同步日志記錄,形成JSON格式數據串,同時標記獲取的信息記錄,避免同一條日志被同步多次。發送同步日志給應用系統。當應用系統返回同步結果為成功時,將標記的同步日志狀態修改為已同步。目前支持的數據類別包括用戶和組織機構,操作類型包括添加、修改、刪除、調動、合并。
(四)身份認證服務實現類
身份認證服務用于為其他應用系統提供用戶身份識別。系統獲取應用系統傳遞過來的用戶令牌,解析用戶令牌獲取用戶信息,然后驗證用戶信息是否正常。如果令牌信息存在并且不超時,則返回詳細的用戶信息,否則提示驗證失敗。
單點登錄功能是企業信息化應用資源整合的重要支撐,是推動企業數字化進程簡化數據維護的工作量的重要手段,在保持基礎數據一致性方面起到標準化與規范化作用。單點登錄功能的實現,避免了用戶在多系統構成的工作應用系統群之間繁瑣的切換與重復登錄操作,使得用戶在使用系統時,一次登錄完成多系統操作,更容易在系統間切換,不用去記住多套用戶身份認證信息,在提高工作效率、改善操作體驗方面效果明顯。
本文所介紹的系統后臺業務功能基于Java語言實現,前端頁面使用vue開發,采用了web應用基本的會話機制,具有良好的通用性和可操作性,對目前不同的瀏覽器具有良好的適配性。本文總結的功能設計和流程規劃,在生產實踐中得到了很好的驗證,無需對原有應用群中的系統做大的改動,不影響在用系統的正常工作,只要配合相應的數據視圖與接口即可完成對接。也可以應用于其他數字資源整合項目,用于滿足單點登錄業務需要。
作者單位:沈陽大學信息中心
1417501705378