孫永升
中科軟科技股份有限公司,中國·北京 100089
單點登錄技術是一個用戶認證的過程,允許用戶一次性進行認證之后,訪問系統中不同的應用;而不需要訪問每個應用時都重新輸入密碼。利用單點登錄,可以將企業的各種信息系統,實現無縫切換登陸。
根據單點登錄技術的特點,分為服務端和客戶端。服務端需單獨部署為單點登錄系統,客戶端集成到企業的各個信息系統。這就要求這些系統需要采用集群、分布式的方式部署到多臺物理機、云服務器上面,以滿足企業的需求;物理機選用華為系統服務器,云端服務器采用的阿里云服務器;不同類型企業有不同類型信息系統。
單點登錄主要功能:能夠緩存登錄者的信息,實現各個系統之間的自如跳轉,在各個功能之間共享基礎數據和登錄數據。
某企業采用B/S架構模式進行系統部署,用戶可以通過客戶端訪問單點登錄,可以自由切換到賬戶管理系統、資金管理系統、融資管理系統、用戶管理系統。這些系統通過對數據庫的訪問實現對流程數據、業務數據和基礎數據的存儲。遠程客戶通過VPN方式訪問該企業的信息系統,局域網用戶則通過LAN方式訪問系統。
單點登錄系統CAS設計,采用的是Cookie機制,優點很多。例如,設計理念先進、體系結構合理、配置簡單、客戶端支持廣泛、技術成熟等。
CAS的實現原理:單點登錄分為“服務端”和“客戶端”。某個應用程序第一要發起第1次認證,用戶在單點登錄服務器的登錄頁面中,輸入用戶名和密碼。第二單點登錄服務器會對用戶名和密碼進行認證,如LDAP或者數據庫等。認證通過之后,單點登錄服務器會和應用程序進行某種授權,授權完成后,CAS把頁面重定向,回到Web應用。單點登錄服務器會在客戶端創建一個Cookie保存用戶登錄的信息,如果用戶此時希望進入其他Web應用程序,自動尋找Cookie,根據Cookie中保存的信息,進行登錄,登錄之后,CAS重定向回到用戶的應用程序[1]。
系統部署的各個服務器使用物理機和云服務器兩種,物理機硬件設備采用華為FusionServer 2488H V5機架服務器,安裝虛擬機,虛擬機使用紅帽Linux操作系統,根據不同的信息系統,分配不同的內存和磁盤空間。例如,賬戶管理系統需要磁盤空間200G、運行內存40G;云服務器使用的阿里云服務器,同樣使用紅帽Linux操作系統,根據不同的信息系統,分配不同的內存和磁盤空間。例如,資金管理系統需要磁盤空間150G、運行內存30G。
以某企業的賬戶管理系統客戶端為例,描述主要單點登錄過程的詳細設計與實現,單點登錄過程,需要眾多類的支持才能完成登錄認證操作,下面針對客戶端、服務端對CAS底層JAR包重點類的調用配置進行說明。
客戶端:在web.xml中加載單點登錄SSO的CAS配置文件security-cas.xml,該文件主要用于配置單點登錄地址、登錄成功后返回的地址。
服務端:在web.xml中加載單點登錄SSO的CAS配置 文 件SafeDispatcherServlet、deployerConfigContext.xml、
warnCookieGenerator.xml、ticketGrantingTicketCookieGenerat or.xml。
deployerConfigContext.xml主要用于配置去除https認證,增加參數p:requireSecure=“false”,是否需要安全驗證,即https,false為不采用。
ticketGrantingTicketCookieGenerator.xml在該文件中配置參數p:cookieSecure=“true”,改參數與https驗證相關,當cookieSecure的值為true則采用https驗證;當cookieSecure的值為false則禁用https驗證。
warnCookieGenerator.xml在該文件中配置參數p:cookieSecure=“true”,改 參 數 與https驗 證 相 關,當cookieSecure 的值為true則采用https驗證;當cookieSecure的值為false則禁用https驗證。
輸入任意系統登錄地址,跳轉到單點登錄login登錄頁面,輸入用戶名和密碼點擊登錄調用Authen ticationViaFormAction的submit進 行 登 錄,AuthenticationViaFormAction調 用CASjar包的底層類[2]。
用戶訪問賬戶管理系統的受保護資源,賬戶管理系統發現用戶未登錄,跳轉至單點登錄模塊系統,并將自己的地址作為參數。單點登錄系統發現用戶未登錄,將用戶引導至登錄頁面,用戶輸入用戶名密碼提交登錄申請。單點登錄系統校驗用戶信息,創建用戶與單點登錄系統之間的會話,稱為全局會話,同時創建授權令牌。
單點登錄系統帶著令牌跳轉至最初的請求地址(賬戶管理系統)。賬戶管理系統拿到令牌,去單點登錄系統校驗令牌是否有效,單點登錄系統校驗令牌,返回有效,注冊賬戶管理系統。賬戶管理系統使用該令牌創建與用戶的會話,稱為局部會話,返回受保護資源,用戶訪問資金管理系統的受保護資源。
資金管理系統發現用戶未登錄,跳轉至單點登錄系統,并將自己的地址作為參數。
單點登錄系統發現用戶已登錄,跳轉回資金管理系統地址,并附上令牌。
資金管理系統拿到令牌,去單點登錄系統校驗令牌是否有效,單點登錄模塊系統校驗令牌,返回有效,注冊資金管理系統。
資金管理系統使用該令牌創建與用戶的局部會話,返回受保護資源用戶登錄成功之后,會與單點登錄系統及各信息系統建立會話,用戶與單點登錄系統建立的會話稱為全局會話,用戶與各信息系統建立的會話稱為局部會話,局部會話建立之后,用戶訪問個信息系統受保護資源將不再通過單點登錄系統,全局會話與局部會話有如下約束關系局部會話存在,全局會話一定存在;全局會話存在,局部會話不一定存在;全局會話銷毀,局部會話必須銷毀。
某企業的不同系統可以部署到物理機或云服務器不同類型的服務器上,下面以部署到物理上的虛擬機器上的服務為例來進行說明。
首先物理機器上安裝虛擬機,并安裝紅帽Linux操作系統,部署選擇200G的硬盤空間,詳細可劃分為根目錄、home、boot、root等分區,分配40G運行內存,并配置網絡;虛機和網絡準備完畢后;下一步安裝中間件tomcat,其次通過選擇合適方式將信息系統的應用部署到中間件tomcat;最后啟動tomcat。以同樣的方式其他信息系統[3]。待所有的信息部署啟動完成以后,可以選擇任意系統登錄,然后無縫切換到其他信息系統。
第一,論文論述了企業信息系統運營面臨的現狀;第二,提出了單點登錄技術在企業引入的必要性;第三,結合單點登錄技術的特點和某企業各個信息系統的情況進行詳細的需求分析;第四,從網絡結構、部署架構兩個方面進行概要設計;第五,從單點登錄服務系統代碼實現層面和實施部署兩個層面進行實現。