張剛剛
(首都師范大學數(shù)字校園建設(shè)中心,北京 100048)
在“互聯(lián)網(wǎng)+”概念的背景下,為進一步提升高校治理體系的現(xiàn)代化水平,各高校都在積極推進智慧校園建設(shè)。通過建設(shè)滿足各種應用場景的業(yè)務系統(tǒng),以提升管理、教學的效率與便捷性。在諸多業(yè)務系統(tǒng)建成后,以往的線下業(yè)務轉(zhuǎn)為在線辦理后產(chǎn)生了大量業(yè)務數(shù)據(jù)。業(yè)務系統(tǒng)建設(shè)早期大多以獨立的賬號密碼作為系統(tǒng)登錄方式,用戶在使用不同系統(tǒng)時可能設(shè)置不同的登錄密碼,因此需要記住大量的用戶名和登錄密碼,而且獨立的系統(tǒng)認證入口很容易成為整個網(wǎng)絡(luò)環(huán)境的安全短板。因此,在智慧校園總體框架中,身份認證成為支撐平臺層的重要組成部分,為上層應用層提供統(tǒng)一的認證入口。在各業(yè)務系統(tǒng)獨立認證用戶身份的情況下,會因人員在職狀態(tài)更新不及時、部門信息更新不準確及人員角色授權(quán)不統(tǒng)一等數(shù)據(jù)一致性問題嚴重影響業(yè)務系統(tǒng)對工作效率的提升效果。為改善這一問題,王群等[1]提出基于LDAP 的實驗室統(tǒng)一身份認證方案,以解決實驗室中多個系統(tǒng)的身份認證問題;谷寧靜[2]提出基于系統(tǒng)原有賬號的跨域SSO 單點登錄系統(tǒng)設(shè)計方案,從而實現(xiàn)各業(yè)務系統(tǒng)進行統(tǒng)一身份認證、分層靈活授權(quán)管理的工作機制。這些研究者從多個業(yè)務系統(tǒng)共享身份認證的角度提出統(tǒng)一認證解決方案,一定程度上解決了身份共享、多系統(tǒng)單點登錄問題,但未對統(tǒng)一身份認證的方便性與安全性作進一步研究。
本文在智慧校園總體框架下,將企業(yè)微信的身份認證功能與統(tǒng)一身份認證相關(guān)技術(shù)相結(jié)合,提出管理統(tǒng)一、方便易用、安全可靠的統(tǒng)一身份認證中心,從而為高校內(nèi)各業(yè)務系統(tǒng)的身份認證提供技術(shù)支撐。用戶可在企業(yè)微信客戶端“無感知”地完成身份認證,改善了傳統(tǒng)統(tǒng)一身份認證登錄的體驗,提高了智慧校園中業(yè)務系統(tǒng)的身份認證效率及安全防護水平。
在高校信息化建設(shè)早期,各應用系統(tǒng)身份認證普遍采用獨立維護賬號密碼的方式。隨著學校業(yè)務系統(tǒng)的不斷增多,極端情況下用戶在訪問每個業(yè)務系統(tǒng)時都需要輸入不同賬號和密碼。為降低記憶賬號、密碼的難度,用戶通常會設(shè)置非常容易破解的簡單密碼,從而導致信息泄露的安全隱患。在智慧校園框架的平臺支撐層,統(tǒng)一身份作為最重要的支撐設(shè)施,為整個智慧校園的應用層提供了統(tǒng)一的身份認證保障。在典型的身份認證過程中,業(yè)務系統(tǒng)應當完成包括消息完整性、發(fā)送方與接收方的不可否認性等業(yè)務邏輯。為保證所有業(yè)務系統(tǒng)在身份認證過程中業(yè)務邏輯的一致性與完整性,通過統(tǒng)一的身份認證入口進行系統(tǒng)登錄成為智慧校園框架下的必然選擇。
如圖1 所示,統(tǒng)一身份認證中的角色可分為身份提供者(Identity Provider,IdP)和服務提供者(Service Provider,SP)兩種。IdP 存儲用戶的身份信息與憑證信息,為SP 提供身份驗證、會話保持等技術(shù)支持,SP 依賴IdP 提供的身份信息并結(jié)合SP 中的身份關(guān)聯(lián)配置為有效用戶提供授權(quán)服務。用戶在IdP 完成身份認證后,訪問SP 提供的授權(quán)資源服務。
Fig.1 Unified identity authentication role圖1 統(tǒng)一身份認證角色
如圖2 所示,在實現(xiàn)方式上,身份認證主要分為3 種模型,分別是獨立認證模型(Isolated Model,IM)、中心認證模型(Centralized Model,CM)與聯(lián)合認證模型(Federated Model,F(xiàn)M)[3]。本文簡要闡述這3 種認證模型,并提出適用于高校內(nèi)部進行身份認證的模型。
Fig.2 Unified identity authentication model圖2 統(tǒng)一身份認證模型
(1)獨立認證模型(IM)。該模型是高校信息化發(fā)展初期應用的模型,即身份認證模塊完全耦合于業(yè)務系統(tǒng)中,用戶使用不同系統(tǒng)時輸入不同登錄憑證完成身份認證。這種模型雖然簡單,但在便利性與安全性方面存在諸多問題[4]。
(2)集中式認證模型(CM)。該模型包含中心化的認證服務,為其他業(yè)務系統(tǒng)提供統(tǒng)一的身份認證服務,同時為同一身份域內(nèi)的各個業(yè)務系統(tǒng)提供單點登錄(SSO)服務。該模型解決了獨立認證模型中身份一致性差及不同業(yè)務系統(tǒng)重復登錄的問題。
(3)聯(lián)合認證模型(FM)。該模型在集中式認證模型基礎(chǔ)上給出了跨系統(tǒng)、跨身份域的認證方案。用戶在訪問身份域A 中的SP1 服務時,SP1 可根據(jù)用戶所在組織身份域B中IdP 提供的身份信息完成資源的訪問授權(quán)。國內(nèi)的中國教育科研網(wǎng)統(tǒng)一認證與資源共享基礎(chǔ)設(shè)施(CARSI)就是聯(lián)合認證模型的一個典型應用[5]。
智慧校園中的業(yè)務系統(tǒng)主要在校園網(wǎng)這一身份域中,若相同身份域內(nèi)的業(yè)務系統(tǒng)使用相同賬號、密碼進行身份認證,可提高用戶使用系統(tǒng)的效率及便利性。同時,為提高賬號的安全性,不同業(yè)務系統(tǒng)在進行身份認證時,均應滿足相同的安全約束。因此,在智慧校園框架下,采用集中式認證模型(CM)為各業(yè)務系統(tǒng)提供統(tǒng)一的身份管理、身份鑒權(quán)及安全策略,既解決了用戶在使用多系統(tǒng)時記憶不同賬號、密碼的問題,又從業(yè)務系統(tǒng)的登錄入口統(tǒng)一了身份認證安全級別。
單點登錄(Single Sign On,SSO)是指用戶通過統(tǒng)一身份認證后,在訪問同一身份域的不同業(yè)務系統(tǒng)時無需進行重復的身份認證過程。用戶將已獲得的票據(jù)提交給統(tǒng)一身份認證即可完成身份驗證,該過程通常由統(tǒng)一身份認證系統(tǒng)自動完成。目前應用較廣泛的單點登錄技術(shù)方案有Cookie、Shibboleth、CAS、RADIUS 及OAuth 等,本文簡要闡述適用于高校的單點登錄方案CAS。
CAS(Central Authentication Service)是由耶魯大學發(fā)起,之后由多所大學共同開發(fā)完善的。CAS 主要為Web 應用系統(tǒng)提供單點登錄功能,采用集中式認證模型提供身份認證服務[6]。其在交互過程中使用https 協(xié)議,通信過程具有很高的安全性。該協(xié)議使用了兩種票據(jù):TGT(Ticket Granting Ticket,票據(jù)授予票據(jù)),對用戶的單次登錄會話有效;ST(Service Ticket,服務票據(jù)),僅對用戶本次訪問的目標業(yè)務系統(tǒng)有效。CAS 方案發(fā)源于高校,之后又由多所高校共同改進,能夠更好地貼合高校應用場景。CAS 的安全性與擴展性可滿足智慧校園架構(gòu)對于身份認證系統(tǒng)及認證模型的要求,本文將CAS 作為統(tǒng)一身份認證的單點登錄方案。
企業(yè)微信是騰訊公司在2015 年推出的企業(yè)級微信平臺,具有與微信一致的使用體驗,可為用戶提供豐富的API(Application Program Interface)以及全面、可靠的安全保障[7-9]。基于企業(yè)微信生態(tài)構(gòu)建《智慧校園總體框架GB/T 36342-2018》標準中的應用平臺層,可為智慧校園上層應用提供通訊錄、消息會話及身份識別等基礎(chǔ)功能。目前,國內(nèi)已有較多高校結(jié)合自身實際情況,基于企業(yè)微信構(gòu)建了管理服務與智慧教學相關(guān)應用[10-13]。企業(yè)微信在身份認證體系構(gòu)建方面提供了以下基礎(chǔ)功能接口[14]:
(1)通訊錄管理接口。提供用戶信息同步、組織架構(gòu)同步等功能,基于該接口將數(shù)據(jù)中心中的教職工、學生、訪客等信息同步至企業(yè)微信通訊錄,從而構(gòu)建實名制的通訊錄。師生的學號、工號與企業(yè)微信通訊錄的賬號一致,用戶登錄企業(yè)微信即可使用企業(yè)微信的身份信息進行身份識別。
(2)身份驗證接口。企業(yè)微信通過OAuth 協(xié)議提供了網(wǎng)頁授權(quán)登錄與企業(yè)微信APP 掃碼登錄兩種身份驗證方式。第三方應用可通過企業(yè)微信的身份驗證接口獲取當前登錄企業(yè)微信的用戶信息,從而免去了用戶輸入賬號、密碼的環(huán)節(jié)。企業(yè)微信采用OAuth 授權(quán)碼方式提供身份驗證服務。企業(yè)微信身份驗證流程如圖3 所示,具體流程為:①用戶點擊開發(fā)者構(gòu)造的OAuth 鏈接;②企業(yè)微信客戶端從后臺獲取攜帶授權(quán)碼(CODE)的鏈接;③企業(yè)微信后臺檢查用戶請求的參數(shù)合法性;④企業(yè)微信后臺返回攜帶有授權(quán)碼的鏈接;⑤企業(yè)微信客戶端將攜帶有授權(quán)碼的鏈接重定向至開發(fā)者后臺;⑥開發(fā)者后臺使用授權(quán)碼通過企業(yè)微信的開放API 獲取當前用戶賬號等信息;⑦開發(fā)者后臺根據(jù)用戶賬號建立會話;⑧企業(yè)微信客戶端將授權(quán)的內(nèi)容呈現(xiàn)給用戶。
Fig.3 Enterprise Wechat OAuth authentication process圖3 企業(yè)微信OAuth 身份驗證流程
通過以上流程,第三方應用即可通過企業(yè)微信的接口獲取當前用戶信息,從而完成系統(tǒng)登錄。
基于“企業(yè)微信+CAS”的統(tǒng)一身份認證方案總體架構(gòu)如圖4 所示,系統(tǒng)由運行環(huán)境層、數(shù)據(jù)存儲層、業(yè)務邏輯層及表示層組成。
(1)運行環(huán)境層。系統(tǒng)采用Docker 的Kubernetes 集群進行部署,通過Docker 運行時環(huán)境降低了異構(gòu)環(huán)境下系統(tǒng)部署的難度,通過集群化系統(tǒng)部署提高系統(tǒng)的穩(wěn)定性。
(2)數(shù)據(jù)存儲層。采用MySQL 主從部署架構(gòu)作為數(shù)據(jù)庫,記錄用戶賬號、接入系統(tǒng)白名單及操作日志等信息,該數(shù)據(jù)庫是統(tǒng)一身份認證系統(tǒng)的數(shù)據(jù)基礎(chǔ)。采用MySQL 作為數(shù)據(jù)層,相較于LDAP 具有擴展性強、數(shù)據(jù)結(jié)構(gòu)靈活及功能迭代效率高等優(yōu)勢。
(3)業(yè)務邏輯層。通過擴展CAS 協(xié)議,為用戶提供身份管理、認證、授權(quán)及審計服務,為終端用戶提供統(tǒng)一身份認證賬號的激活、密碼重置等功能。
(4)表示層。系統(tǒng)通過表示層提供身份認證服務,以及CAS 認證接口、Restful 接口與LDAP 認證接口。
系統(tǒng)在業(yè)務邏輯層與表示層的全生命周期中設(shè)計了用戶操作的詳細審計日志,以保證用戶在系統(tǒng)中的所有操作都有痕跡,提高身份認證過程的安全性及認證結(jié)果的不可抵賴性。
Fig.4 System overall architecture圖4 系統(tǒng)總體架構(gòu)
隨著信息技術(shù)的不斷發(fā)展,研究者不斷嘗試將新技術(shù)、新手段作為身份認證的雙因子以提升登錄的安全性。相關(guān)方法主要概括為3 類:令牌(如手機短信驗證碼)、生物信息(如人臉、虹膜、體態(tài)等)、智能硬件(如U 盾、校園卡等)[15]。企業(yè)微信APP 作為一款具有極高安全級別的移動應用,在用戶完成登錄后能夠長時間保持登錄狀態(tài),且用戶一般不會將具有高度私人屬性的手機出借給他人。因此,可將企業(yè)微信作為身份認證的一種方式,用戶可方便地通過企業(yè)微信掃碼或企業(yè)微信內(nèi)置瀏覽器完成身份認證。同時,借助企業(yè)微信很好的安全防護基礎(chǔ),在提升便捷性的同時,不會降低安全性。用戶在非可信環(huán)境中通過企業(yè)微信掃碼登錄,能夠有效降低用戶通過鍵盤輸入賬號、密碼導致密碼泄露的風險。
“企業(yè)微信+CAS”的統(tǒng)一身份認證方案思路為:用戶首次訪問業(yè)務系統(tǒng)時,請求會被重定向至CAS 服務器,CAS 服務器通過判斷用戶當前訪問的客戶端User-Agent 頭信息來構(gòu)造不同的企業(yè)微信登錄鏈接。如圖5 所示,具體流程描述為:①用戶首次訪問業(yè)務系統(tǒng)A;②業(yè)務系統(tǒng)A 將用戶請求重定向至CAS 服務器進行身份驗證;③CAS 服務器檢查用戶請求的Agent 頭部信息,如果User-Agent 中包含wxwork,則構(gòu)造企業(yè)微信OAuth2 登錄鏈接,否則構(gòu)造企業(yè)微信掃碼登錄鏈接;④將用戶請求重定向至構(gòu)造好的鏈接;⑤用戶通過企業(yè)微信APP 完成掃碼登錄;⑥企業(yè)微信將Code 返回CAS 服務器,并向用戶的企業(yè)微信推送一條賬號登錄提醒;⑦CAS 通過Code 從企業(yè)微信服務器獲取當前用戶身份信息;⑧CAS 服務器針對業(yè)務系統(tǒng)A 簽發(fā)有效的TGT 和ST;⑨CAS 服務器將ST 信息返回給用戶;⑩用戶攜帶ST 信息訪問業(yè)務系統(tǒng)A;?業(yè)務系統(tǒng)A 通過CAS 服務器驗證ST 的有效性;?業(yè)務系統(tǒng)授權(quán)用戶完成系統(tǒng)登錄,并返回會話票據(jù);?用戶后續(xù)使用業(yè)務系統(tǒng)返回的會話票據(jù)完成系統(tǒng)操作。
通過以上流程,用戶通過企業(yè)微信的身份認證接口授權(quán)CAS 獲取其賬號后完成系統(tǒng)登錄。企業(yè)微信與CAS 服務之間使用OAuth 方式完成身份驗證,業(yè)務系統(tǒng)通過CAS返回的ST 完成身份驗證。特別地,在步驟④中,用戶使用企業(yè)微信客戶端的內(nèi)置瀏覽器進行身份驗證時,系統(tǒng)會構(gòu)造OAuth 授權(quán)鏈接,免去了掃碼操作,從而“無感知”地完成身份驗證。當用戶訪問相同身份域中的業(yè)務系統(tǒng)B 時,由于用戶已攜帶了用于標識用戶身份的TGC 票據(jù),CAS 服務會直接簽發(fā)用于業(yè)務系統(tǒng)B 的ST 票據(jù),業(yè)務系統(tǒng)B 直接通過ST 票據(jù)驗證用戶的有效性,從而實現(xiàn)單點登錄。
Fig.5 Enterprise Wechat+ CAS login process圖5 企業(yè)微信+CAS 登錄流程
方案部署環(huán)境配置信息如表2 所示。
Table 2 Scheme deployment environment configuration information表2 方案部署環(huán)境配置信息
本文通過設(shè)計兩個實驗驗證方案的并發(fā)處理能力與系統(tǒng)性能,每個實驗均執(zhí)行10 輪并取實驗結(jié)果的平均值。實驗采用賬號、密碼的方式進行認證。
(1)多客戶端的并發(fā)實驗。通過運行1~200 個客戶端對系統(tǒng)進行壓力測試以驗證系統(tǒng)的并發(fā)能力,每次實驗時均并發(fā)運行客戶端請求,每個客戶端均獨立對系統(tǒng)發(fā)送身份驗證請求。
(2)單獨客戶端的性能實驗。通過實驗分析用戶在短時間內(nèi)頻繁訪問相同身份域內(nèi)多個業(yè)務系統(tǒng)時的響應速度等情況。
筆者所在單位將企業(yè)微信作為移動門戶,在企業(yè)微信中置入了全員組織架構(gòu)信息及用戶基本身份信息,并分別與學籍信息庫及人事系統(tǒng)庫進行數(shù)據(jù)聯(lián)動,企業(yè)微信日活人數(shù)覆蓋在???cè)藬?shù)的98%以上。采用本文設(shè)計方案改造統(tǒng)一身份認證系統(tǒng),并接入智慧校園中的全部業(yè)務系統(tǒng)。與之前LDAP 統(tǒng)一認證登錄方式相比,通過本文方案為Web 應用提供身份認證與單點登錄功能,通過Restful 及LDAP 接口層為學校VPN 及網(wǎng)絡(luò)登錄提供身份認證功能,補充了用戶登錄系統(tǒng)的方式,提高了智慧校園環(huán)境下各業(yè)務系統(tǒng)登錄入口的安全性。
采用更加標準、通用的CAS 協(xié)議與企業(yè)微信開放接口,可減少第三方廠商對接的難度,提高對接效率。通過認證中心中的弱密碼檢測功能,在用戶輸入密碼時檢測密碼強度,并通過企業(yè)微信的消息接口通知用戶修改密碼為符合要求的強密碼。在筆者單位,用戶訪問統(tǒng)一身份認證系統(tǒng)時需經(jīng)過入侵檢測、防火墻、WAF 防火墻等安全設(shè)備,并使用HTTPS 協(xié)議加密交互全過程,結(jié)合企業(yè)微信完備的安全防護能力,全方位提升了業(yè)務系統(tǒng)登錄入口的安全性。
圖6 的分析結(jié)果顯示,“企業(yè)微信+CAS”統(tǒng)一身份認證系統(tǒng)方案上線一個月后,用戶總體登錄習慣由賬號密碼登錄方式轉(zhuǎn)變?yōu)槠髽I(yè)微信登錄方式(本方案占比80%以上)。其中,學生賬號與總體習慣趨勢一致,而教職工賬號很大程度上保留了賬號密碼的登錄方式(本方案占比20%左右)。通過對訪問日志的進一步分析及用戶調(diào)研后發(fā)現(xiàn),教職工通常使用瀏覽器的記住密碼功能以減少頻繁輸入賬號、密碼的頻率,學生群體更容易接受使用企業(yè)微信授權(quán)登錄方式完成身份認證?;诹己玫挠脩舴答?,一方面可加強企業(yè)微信登錄方式在保障用戶隱私、提高賬號安全性優(yōu)勢方面的宣傳,另一方面需進一步挖掘企業(yè)微信的用戶身份鑒權(quán)相關(guān)接口,為用戶提供更好的登錄體驗,以進一步提高用戶對企業(yè)微信身份認證功能的使用率。
Fig.6 Proportion of different login methods圖6 不同登錄方式占比情況
“企業(yè)微信+CAS”方案在安全性與便捷性之間取得了一定程度上的平衡,基于企業(yè)微信完善的安全防護體系,該方案具備了較高安全水平。筆者單位在實施本文方案后,通過弱密碼檢測功能識別出10 000 余人使用了常見的弱口令,并鎖定了5 000 余個長期閑置的賬號,以提前預防賬號風險。利用企業(yè)微信結(jié)合CAS 的賬號安全機制,智慧校園下各個業(yè)務系統(tǒng)可具有統(tǒng)一的安全入口,使建設(shè)方能夠更專注于自身業(yè)務的打磨,提升智慧校園建設(shè)的整體效能。通過分析用戶登錄日志后得出,用戶在掃碼完成或輸入正確的賬號、口令后到跳轉(zhuǎn)到業(yè)務系統(tǒng)完成身份認證的響應時間在800ms 以內(nèi)(平均響應時間為498ms),具有較理想的響應效率。
本文在智慧校園總體框架下,探討了智慧校園中統(tǒng)一身份認證與單點登錄相關(guān)概念及模型,提出“企業(yè)微信+CAS”的統(tǒng)一身份認證系統(tǒng)設(shè)計方案。通過融合應用廣泛的CAS 協(xié)議及具有可信身份環(huán)境的企業(yè)微信,實現(xiàn)校園內(nèi)各業(yè)務系統(tǒng)的統(tǒng)一身份認證與單點登錄功能,并通過企業(yè)微信掃碼登錄和“無感知”登錄方式免去了用戶記憶密碼的煩惱,提升了校園網(wǎng)絡(luò)環(huán)境的安全性及信息化水平。今后將進一步深入研究智慧校園框架下統(tǒng)一身份認證系統(tǒng)的優(yōu)化運用。