姚剛 齊玉東 董慶超 司維超
摘要:隨著軍隊信息化工作的進行,越來越多的軍事信息系統(tǒng)被開發(fā)出來,如何更好地管理各個系統(tǒng)的用戶和權(quán)限已成為一個重要的研究課題。單點登錄技術(shù)可以實現(xiàn)一次登錄,訪問所有授權(quán)的系統(tǒng)。在分析了軍事信息系統(tǒng)的現(xiàn)狀和現(xiàn)有單點登錄技術(shù)的特點基礎(chǔ)上,得出了適合于軍事信息系統(tǒng)的單點登錄技術(shù)。針對某軍事信息系統(tǒng),總結(jié)其單點登錄需求,給出了總體方案和系統(tǒng)組成,設(shè)計了權(quán)限管理、用戶身份映射等關(guān)鍵模塊,并給出了具體實現(xiàn)方法。實踐表明,單點登錄技術(shù)的應(yīng)用將會大大提高工作效率,促進信息化工作的進行。
關(guān)鍵詞:單點登錄;軍事信息系統(tǒng);CAS
0引言
隨著軍隊信息化工作的展開和推進,部隊人員在工作中會應(yīng)用接觸越來越多的信息系統(tǒng)。這對于用戶和管理員都造成了一定的實踐操作困擾:用戶如果要登錄多個系統(tǒng),不僅要面對多個登錄界面,可能還要記憶不同的用戶名和口令:而管理員則需要維護各個系統(tǒng)中的用戶,保持用戶的一致性。同時,頻繁的輸入密碼對于安全性也帶來了潛在的風險。因此,迫切需要一種技術(shù)來解決登錄效率和安全性問題。單點登錄技術(shù)(SS0,Single Sign-On),即用戶只需要登錄一次就可以訪問網(wǎng)絡(luò)中所有相互信任的系統(tǒng)。這種登錄技術(shù)是開發(fā)應(yīng)用系統(tǒng)的一種趨勢,其設(shè)計關(guān)鍵是所有的系統(tǒng)共享一個身份認證信息,實現(xiàn)一次登錄,訪問所有授權(quán)系統(tǒng)。
1軍事信息系統(tǒng)現(xiàn)狀
隨著軍隊信息化進程的日趨深入,部隊各業(yè)務(wù)部門產(chǎn)生了多個信息系統(tǒng)。在長期的應(yīng)用過程中,形成了各自獨立的用戶庫和認證方法,并且訪問機制、編程語言不統(tǒng)一。重點表現(xiàn)在以下2個方面:
1)多個應(yīng)用需要多個客戶端。由于軍隊的信息化是一個循序漸進的過程,不同的應(yīng)用系統(tǒng)出現(xiàn)的時期也各有差異,而且還有許多都是C/S模式的系統(tǒng),從而使一臺電腦上需要安裝多個客戶端才能應(yīng)用各個系統(tǒng):
2)操作復(fù)雜且成本高。對于用戶來說,同一用戶可能要兼顧處理多個應(yīng)用系統(tǒng),因此在登錄多個系統(tǒng)時要輸入不同的用戶名和口令。對于管理員來說,管理員則要管理和維護各個系統(tǒng)的數(shù)據(jù)庫。
綜上分析可知,要實現(xiàn)單點登錄的研發(fā)設(shè)計,需要滿足以下功能:
1)將所有應(yīng)用系統(tǒng)的人口集成到瀏覽器中,從而免去多個客戶端的安裝:
2)提供統(tǒng)一身份管理和單點登錄。將現(xiàn)有的應(yīng)用系統(tǒng)的用戶規(guī)劃組織為統(tǒng)一性質(zhì),完成統(tǒng)一的用戶認證。在統(tǒng)一用戶的基礎(chǔ)上,實現(xiàn)單點登錄功能。在統(tǒng)一用戶登錄到某一應(yīng)用系統(tǒng)(通常是門戶站點)后,當需要訪問其他應(yīng)用系統(tǒng)時,不必再次登錄就可以直接進入應(yīng)用系統(tǒng)。
2單點登錄技術(shù)概述
目前,單點登錄的技術(shù)可以分為開源和商用兩種模式。使用較多的開源單點登錄框架包括Yale CAS、Open SSO、Jsecuriy、Shibboleth等,各個框架各有特點。同樣,市場上也存在有單點登錄產(chǎn)品,包括Net Passport、Liberty等單點登錄系統(tǒng)。上述單點登錄的應(yīng)用技術(shù)和實現(xiàn)手段均能夠初步解決重復(fù)登錄的問題,但是目前仍呈現(xiàn)出諸多有待完善的缺點。而本文研究核心則設(shè)定為其與軍事信息系統(tǒng)的結(jié)合,充分考慮貼合部隊的任務(wù)需求,同事也著重關(guān)注并引入了系統(tǒng)安全性、易用性、經(jīng)濟性等方面因素。Passport單點登錄系統(tǒng)和Liberty單點登錄系統(tǒng)中負責身份認證的服務(wù)器由國外公司控制,用戶身份和系統(tǒng)的保密性及安全性受到威脅,不適合作為結(jié)合的對象系統(tǒng)。開源登錄框架中Open SSO、Jsecuriy、Shibboleth的適用范圍較窄且部署相對復(fù)雜,而CAS單點登錄系統(tǒng)(Central Authentication Service)部署簡單、成本經(jīng)濟,支持多種平臺應(yīng)用,安全可靠,因此本文研究即將CAS與軍事信息系統(tǒng)進行了結(jié)合。
CAS作為較為成熟的框架,是Yale大學研發(fā)的免費開源框架,并且已經(jīng)創(chuàng)建了諸多商業(yè)框架的應(yīng)用實例。從CAS的結(jié)構(gòu)體系看,CAS包括2部分:CAS Server和CAS Client。其中,Server將重點執(zhí)行對用戶的認證工作,需要獨立部署,而其要處理的用戶相關(guān)信息包括用戶名/密碼等憑證。Client則用于分析處理對客戶端受保護資源的訪問請求,當需要對請求方提交身份認證時,即重定向到CAS Server進行認證。CAS Client需要與受保護的客戶端應(yīng)用部署在一起,以Filter方式保護相應(yīng)的資源,過濾從客戶端發(fā)送的每一個Web請求,并且CAS Client會分析HTTP請求中是否包含請求Service Ticket,如果沒有,則說明該用戶還未經(jīng)過認證;于是CAS Client會重定向用戶請求到CAS Server,并傳遞Service(要訪問的目的資源地址)。
3應(yīng)用實例
3.1需求分析
某軍事項目研究需要涉及多個應(yīng)用系統(tǒng)進行協(xié)同工作。部隊人員需要接觸多個信息系統(tǒng)的賬號和密碼,存在一定的安全隱患。實踐發(fā)現(xiàn),不同應(yīng)用系統(tǒng)之間各自的特色功能、設(shè)計方案和開發(fā)技術(shù)均有所不同。此外,不同應(yīng)用系統(tǒng)開發(fā)時間前后各異、耗時長短不一,各自建立有相互獨立的用戶數(shù)據(jù)庫和用戶認證體系,用戶信息互不兼容、數(shù)據(jù)格式互不統(tǒng)一,導致各應(yīng)用系統(tǒng)間信息關(guān)聯(lián)困難,形成了猶如障礙的信息壁壘,難以達成信息共享,靈活辦公。進一步地,細節(jié)問題可描述呈現(xiàn)在操作使用方面:訪問不同應(yīng)用系統(tǒng)需要依次登錄,過程枯燥而繁雜,耗費精力,并且大量的賬號和密碼信息在輸入時難免出錯,進而影響效率。為此,將單點登錄技術(shù)與該軍事信息系統(tǒng)相互結(jié)合,在各應(yīng)用系統(tǒng)的登錄認證機制中引入單點登錄技術(shù),使用戶僅通過一次身份認證,便能夠獲得所有應(yīng)用系統(tǒng)的訪問授權(quán),實現(xiàn)“一次登錄、全網(wǎng)漫游”。
3.2應(yīng)用研究設(shè)計
3.2.1總體設(shè)計方案
為了實現(xiàn)用戶的快速登錄和訪問,設(shè)計時通過信息門戶的方式展示相關(guān)新聞和所有應(yīng)用系統(tǒng)的人口。將門戶的登錄和各應(yīng)用系統(tǒng)的人口集成在首頁的顯著位置。將CAS技術(shù)應(yīng)用到現(xiàn)有系統(tǒng),具體可分為2部分來展開研究設(shè)計:將多個應(yīng)用系統(tǒng)與CAS Client部署整合到一起,為用戶提供相應(yīng)服務(wù)和資源:CAS Server與原有應(yīng)用系統(tǒng)的用戶登錄數(shù)據(jù)庫相互連接,負責用戶身份信息的認證和管理。在實際的具體分析時,本文采用模塊化的設(shè)計方案,將系統(tǒng)分為客戶端和服務(wù)器兩個相互耦合的模塊,分別對應(yīng)CAS單點登錄系統(tǒng)中的CAS Client和CAS Server。并根據(jù)后續(xù)處理功能不同,客戶端與服務(wù)器下將分別設(shè)有各自定制子模塊。
3.2.2權(quán)限管理模塊設(shè)計
在權(quán)限管理時,需要建立統(tǒng)一的用戶登錄數(shù)據(jù)庫,技術(shù)設(shè)計實體主要包括有用戶、角色、應(yīng)用系統(tǒng)和權(quán)限。權(quán)限管理模塊在整體上規(guī)定了用戶所屬角色、分配權(quán)限、驗證用戶訪問權(quán)限。具體研發(fā)信息如下:
1)用戶。即請求訪問使用并獲取本系統(tǒng)服務(wù)和資源的用戶,是用戶登錄數(shù)據(jù)庫的關(guān)鍵主體部分:
2)角色。本系統(tǒng)中,用戶和角色兩者是相互關(guān)聯(lián)的,用戶是具體客觀存在的人,角色是用戶在本系統(tǒng)中擁有的身份,如有的角色負責對用戶的訪問權(quán)限進行授權(quán),而有的角色則只負責查看用戶的訪問權(quán)限;
3)應(yīng)用系統(tǒng)。應(yīng)用系統(tǒng)就是用戶請求訪問的服務(wù)和資源,為方便本系統(tǒng)實現(xiàn)單點登錄的功能,根據(jù)不同應(yīng)用系統(tǒng)的特點,在應(yīng)用系統(tǒng)類的組織籌建上主要包含了應(yīng)用系統(tǒng)的名稱、域名、IP地址、端口等信息;
4)權(quán)限。權(quán)限是用戶真實執(zhí)行的操作,不同的操作對應(yīng)不同的功能,分配給不同的角色,而用戶根據(jù)分派角色的不同,則具備不同的權(quán)限。權(quán)限類的設(shè)計建立包含了用戶可能執(zhí)行的操作(通常指訪問的應(yīng)用系統(tǒng))和角色的身份。
面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計思想簡化了用戶數(shù)據(jù)庫建立的研發(fā)內(nèi)容,只需要創(chuàng)建實體,再根據(jù)實際情況錄入用戶信息。本系統(tǒng)優(yōu)化推出的用戶登錄數(shù)據(jù)庫中,綜上4種實體類之間的關(guān)系基本為:用戶與角色之間為依賴關(guān)系,權(quán)限分配給不同角色,從而用戶也將訪問不同的應(yīng)用系統(tǒng),實體關(guān)系模型可見于圖1。
在系統(tǒng)中,采用角色和權(quán)限管理,從而方便對資源的訪問,其中角色是權(quán)限的集合,權(quán)限是可以訪問和執(zhí)行的業(yè)務(wù)功能的集合。一個用戶可擁有多個角色,同一角色可多次授予不同的操作員。一個角色可配有多個權(quán)限,對于特定資源的訪問,不同的權(quán)限組合構(gòu)成不同的角色。一個權(quán)限對應(yīng)多個功能點和數(shù)據(jù)訪問規(guī)則,同一功能點或數(shù)據(jù)訪問控制規(guī)則可與多個權(quán)限形成互相關(guān)聯(lián)。
3.2.3用戶身份映射模塊設(shè)計
在用戶登錄數(shù)據(jù)庫中增加用戶身份映射表,用于存儲服務(wù)器與各個應(yīng)用系統(tǒng)的用戶身份映射關(guān)系,假設(shè)用戶A在系統(tǒng)中用戶身份映射關(guān)系如表1所示。
用戶A在服務(wù)器登錄后,訪問應(yīng)用系統(tǒng)A時,系統(tǒng)將根據(jù)其身份映射信息查詢該用戶在應(yīng)用系統(tǒng)A中的身份信息A1,并進行訪問控制;同樣,訪問應(yīng)用系統(tǒng)B時,得到用戶名為A2,對應(yīng)用系統(tǒng)B進行訪問控制。用戶身份映射模塊結(jié)構(gòu)則如圖2所示。
3.2.4系統(tǒng)工作流程設(shè)計
當在門戶網(wǎng)站上進行單點登錄時,首先需要對訪問用戶的身份信息予以審核認證,此過程中用戶將提供個人身份證明(正確的賬號和密碼),若用戶信息與數(shù)據(jù)庫信息匹配則認證成功,系統(tǒng)發(fā)放相應(yīng)票據(jù)并允許用戶訪問系統(tǒng)。根據(jù)用戶登錄時的狀態(tài),則可劃分有首次登錄系統(tǒng)和登錄后訪問其他應(yīng)用系統(tǒng)。在此,將對其分別展開研究論述如下。
3.2.4.1首次登錄流程
用戶首次登錄流程如圖3所示。用戶首次登錄系統(tǒng)時,服務(wù)器需要對用戶身份信息進行驗證,主要登錄流程的步驟內(nèi)容可設(shè)計詳解為:
1)用戶通過瀏覽器訪問客戶端應(yīng)用系統(tǒng);
2)客戶端接收用戶的訪問請求,將訪問請求重定向至服務(wù)器,對用戶身份驗證,過程攜帶要訪問資源的URL(統(tǒng)一資源定位符),以便認證通過后返回請求資源;
3)服務(wù)器判斷當前用戶狀態(tài)為首次登錄,為用戶提供登錄界面:
4)用戶輸入賬號和密碼,結(jié)果返回服務(wù)器;
5)服務(wù)器通過用戶認證模塊,查詢用戶登錄數(shù)據(jù)庫,驗證用戶身份信息,若驗證不通過,則訪問失敗,需要再次輸入身份信息;若驗證通過,則將登錄賬號發(fā)送到權(quán)限管理模塊進行驗證:
6)權(quán)限管理模塊驗證該用戶是否有權(quán)限訪問目標系統(tǒng),通過查詢用戶數(shù)據(jù)庫,驗證用戶權(quán)限,并返回查詢結(jié)果給服務(wù)器:
7)若驗證通過,生成并緩存sT驗證票據(jù)(Service Ticket);反之則訪問失敗,重新登錄;
8)攜帶服務(wù)器生成的sT票據(jù),通過用戶瀏覽器,訪問客戶端應(yīng)用系統(tǒng):
9)客戶端請求服務(wù)器驗證該sT的有效性,并將ST票據(jù)銷毀。
綜合以上設(shè)計步驟后,客戶端應(yīng)用系統(tǒng)將允許用戶訪問并提供請求資源和服務(wù)。
3.2.4.2登錄后訪問其他客戶端應(yīng)用系統(tǒng)流程
登錄后訪問其他客戶端應(yīng)用系統(tǒng)流程如圖4所示。用戶登錄系統(tǒng)后再次訪問其他應(yīng)用系統(tǒng)時,無需再次進行身份信息認證,主要登錄流程的步驟內(nèi)容可設(shè)計詳解為:
1)用戶登錄系統(tǒng)后,再次訪問其他客戶端應(yīng)用系統(tǒng);
2)客戶端首先檢查用戶瀏覽器Cookie文件中是否存有sT票據(jù),若不存在,則將訪問請求重定向到服務(wù)器;
3)服務(wù)器從用戶瀏覽器Cookie中獲取TGC票據(jù),并驗證該TGC是否合法有效;
4)權(quán)限管理模塊通過查詢用戶數(shù)據(jù)庫,驗證用戶的權(quán)限,并返回結(jié)果給服務(wù)器;
5)服務(wù)器生成并緩存sT驗證票據(jù):
6)攜帶sT驗證票據(jù),訪問客戶端應(yīng)用系統(tǒng);
7)客戶端請求服務(wù)器驗證票據(jù)有效性,并銷毀sT。
綜合以上設(shè)計步驟后,客戶端應(yīng)用系統(tǒng)則允許用戶免密碼就可以提供請求資源和服務(wù)。
3.3單點登錄技術(shù)的具體實現(xiàn)
3.3.1系統(tǒng)開發(fā)環(huán)境
完成單點登錄技術(shù)的具體實現(xiàn),首先需要對環(huán)境系統(tǒng)進行部署與配置。系統(tǒng)環(huán)境的建立過程中,需要用到的軟件主要包括有:Tomcat 7.2(免費開源的WEB應(yīng)用服務(wù)器);JDK6(JAVA的運行編輯環(huán)境);CAS Service版本CAS-Server-3.4.8-release;CAS Client版本CAS-Client-3.2.1-release;MYSQL數(shù)據(jù)庫版本MYSQL-5.6.24-win32;MYSQL連接JDBC驅(qū)動版本MYSQL-connector-java-5.6-bin.jar。
3.3.2系統(tǒng)客戶端模塊的實現(xiàn)
本系統(tǒng)的設(shè)計主旨就是將軍事信息系統(tǒng)各個應(yīng)用系統(tǒng)和CAS Client二者相互結(jié)合部署,組成完整的單點登錄系統(tǒng)的客戶端部分。其核心思想是將需要的CAS Client相關(guān)配置文件(Portal Application Server)指定分發(fā)到各應(yīng)用系統(tǒng)中,并對相關(guān)配置文件提供準確設(shè)定。該方案特點是兩者同時部署在同一個服務(wù)器上,緊密結(jié)合,高度集成,操作管理融為一體、且快捷簡便。用戶訪問客戶端應(yīng)用系統(tǒng)時,首先被身份認證過濾器攔截,檢查用戶瀏覽器Cookie中是否具有授權(quán)票據(jù)sT,若存在則允許訪問,否則將重定向至服務(wù)器進行身份認證,通過認證后攜帶服務(wù)器生成票據(jù)重新訪問,此時身份認證過濾器將允許訪問操作。訪問請求通過用戶身份過濾器的允許后,將會被票據(jù)檢驗過濾器攔截。重定向至服務(wù)器檢驗授權(quán)票據(jù)是否有效,只有檢驗有效后方可實現(xiàn)應(yīng)用系統(tǒng)訪問。
3.3.3系統(tǒng)服務(wù)器模塊的實現(xiàn)
根據(jù)某軍事信息系統(tǒng)的工作現(xiàn)狀:部分早期開發(fā)的應(yīng)用系統(tǒng)內(nèi)置的用戶數(shù)據(jù)庫信息比較完善,認證機制也比較健全;而部分新建應(yīng)用系統(tǒng)的用戶認證體系相對而言卻并不完整。因此,本文著眼實際情況,將系統(tǒng)服務(wù)器的實現(xiàn)分為2類。一類是新建統(tǒng)一的用戶登錄數(shù)據(jù)庫,與CAS Server連接,方便所有新建系統(tǒng)的用戶注冊和登錄:另一類是將原有應(yīng)用系統(tǒng)用戶身份信息進行映射,建立用戶身份信息映射模塊,精簡工作任務(wù)。用戶登錄時,服務(wù)器通過數(shù)據(jù)庫連接驅(qū)動,在統(tǒng)一用戶登錄數(shù)據(jù)庫中查詢用戶身份信息,并將結(jié)果返回服務(wù)器進行用戶身份信息認證。因此要替換服務(wù)器原有的認證方式(CAS Server的原有認證機制),以用戶登錄數(shù)據(jù)庫中的信息服務(wù)器作為新的認證方式,具體做法為:在服務(wù)器WEB-INF\lib配置文件中,編輯deployerConfigContext.xml文件,找到CAS Server認證方式的類并將其刪除。系統(tǒng)服務(wù)器模塊重點針對授權(quán)票據(jù)展開處理,用戶成功登錄后,服務(wù)器模塊生成授權(quán)票據(jù)并導人瀏覽器Cookie中,驗證客戶端授權(quán)票據(jù)的有效性,當訪問請求結(jié)束后銷毀該票據(jù)。
3.4實施效果
單點登錄技術(shù)應(yīng)用于該軍事信息系統(tǒng)后,用戶在關(guān)聯(lián)門戶網(wǎng)站中依規(guī)輸入其帳號和密碼,系統(tǒng)會對合法性做出判定,對單點登錄的代理程序發(fā)出請求并在各個應(yīng)用服務(wù)器中對系統(tǒng)賬戶合法性進行判斷,從而實現(xiàn)單點登錄,對系統(tǒng)的功能和安全發(fā)揮了良好的保護作用。
4結(jié)束語
軍事信息系統(tǒng)數(shù)量的日益增加將會使單點登錄技術(shù)的應(yīng)用范圍也趨于廣闊。本文在分析了現(xiàn)有單點登錄技術(shù)和軍事信息系統(tǒng)現(xiàn)狀的基礎(chǔ)上,研發(fā)提出了某軍事信息系統(tǒng)單點登錄技術(shù)的具體設(shè)計和實現(xiàn)方案,從而減少了用戶記憶多個密碼的麻煩,降低了密碼遭遇竊取的風險。實踐表明,單點登錄技術(shù)不但能提高工作效率,而且能更好地保護系統(tǒng)和用戶信息的安全。