文/陶晉
自助服務(wù)系統(tǒng)讓校園網(wǎng)申請(qǐng)更便捷
文/陶晉
在當(dāng)前國(guó)內(nèi)高校的數(shù)字化建設(shè)中, 網(wǎng)絡(luò)服務(wù)始終是最基礎(chǔ)最重要的部分,如何使師生能更方便地申請(qǐng)和使用網(wǎng)絡(luò),同時(shí)規(guī)范網(wǎng)絡(luò)申請(qǐng)的管理流程,上海財(cái)經(jīng)大學(xué)網(wǎng)絡(luò)中心對(duì)此問(wèn)題做了專門研究,設(shè)計(jì)并建設(shè)了校園網(wǎng)絡(luò)自助服務(wù)系統(tǒng)。
對(duì)上海財(cái)經(jīng)大學(xué)的學(xué)生來(lái)說(shuō),以往,如要申請(qǐng)校園網(wǎng)需首先登錄網(wǎng)上平臺(tái)提交申請(qǐng)訂單,然后管理員根據(jù)訂單在校內(nèi)Radius服務(wù)器中添加對(duì)應(yīng)的賬號(hào)。隨后根據(jù)用戶申請(qǐng)的賬號(hào)類型劃分不同的VLAN,因此管理員還需手工找出用戶的網(wǎng)絡(luò)端口,登錄到對(duì)應(yīng)的網(wǎng)絡(luò)交換機(jī)修改VLAN標(biāo)識(shí)號(hào)。用戶提交完訂單后還需到學(xué)生服務(wù)中心pos機(jī)上去刷校園卡,全部完成后通知用戶到系統(tǒng)中去獲取最新的賬號(hào)密碼。整個(gè)網(wǎng)絡(luò)服務(wù)的申請(qǐng)流程不夠智能化,需要建設(shè)一個(gè)高效自動(dòng)化的服務(wù)系統(tǒng),既可以簡(jiǎn)化用戶的申請(qǐng)過(guò)程,獲得更好的使用體驗(yàn),也可以減輕網(wǎng)絡(luò)管理員的工作量,提高管理效率。
上海財(cái)經(jīng)大學(xué)網(wǎng)絡(luò)中心設(shè)計(jì)并建設(shè)了一套校園網(wǎng)絡(luò)自助服務(wù)系統(tǒng)。該系統(tǒng)整合了相關(guān)公司的智能管理平臺(tái),用于網(wǎng)絡(luò)賬號(hào)的管理。同時(shí),為師生提供了電信和聯(lián)通多個(gè)運(yùn)營(yíng)商的接入選擇,針對(duì)不同的接入網(wǎng)絡(luò)劃分不同的VLAN虛擬局域網(wǎng),因此系統(tǒng)也整合了VLAN的自動(dòng)切換功能,用于接入網(wǎng)絡(luò)的轉(zhuǎn)化。考慮到移動(dòng)終端的日益普及,系統(tǒng)除了傳統(tǒng)的B/S網(wǎng)頁(yè)架構(gòu),還結(jié)合上海財(cái)經(jīng)大學(xué)微信企業(yè)號(hào)部署了移動(dòng)端的應(yīng)用接入,并設(shè)計(jì)建設(shè)了支付平臺(tái),支持用戶通過(guò)網(wǎng)上微信支付。將部分重要的網(wǎng)絡(luò)監(jiān)控集成進(jìn)微信應(yīng)用,通過(guò)微信通知管理員及時(shí)進(jìn)行處理。
圖1 相關(guān)系統(tǒng)框架下設(shè)計(jì)的接口方案
上海財(cái)經(jīng)大學(xué)的有線網(wǎng)絡(luò)使用了802.1x認(rèn)證協(xié)議,Radius采用了相關(guān)公司的IMC智能管理平臺(tái)。在這樣的系統(tǒng)框架下,設(shè)計(jì)了接口方案,如圖1所示。自助服務(wù)系統(tǒng)后臺(tái)采用Java開發(fā),通過(guò)SOAP協(xié)議進(jìn)行跨語(yǔ)言、跨操作系統(tǒng)的互操作。智能管理平臺(tái)采用了SOA基于服務(wù)的架構(gòu),設(shè)計(jì)采用了Apache Axis2的WebService框架。
下面描述下接口調(diào)用的具體過(guò)程:
1.首先使用Axis2中的ConfigurationContextFactory類獲得配置上下文,創(chuàng)建一個(gè)用于保持Session狀態(tài)的ServiceClient實(shí)體,使多個(gè)Service可在同一個(gè)Session中處理。
2.調(diào)用login(imcEndpointStr,sc)接口登錄IMC服務(wù)器,使用stub.toOM(login, true)方法構(gòu)造SOAP報(bào)文,然后通過(guò)stub轉(zhuǎn)換為OMElement,再使用之前的ServiceClient對(duì)象發(fā)送該SOAP報(bào)文。發(fā)送結(jié)束后,還會(huì)收到回應(yīng)SOAP報(bào)文,用Stub創(chuàng)建的回應(yīng)實(shí)體Response來(lái)解析這個(gè)SOAP報(bào)文。在對(duì)操作員的身份驗(yàn)證及ACL合法性檢查通過(guò)之后,才能調(diào)用后續(xù)的其他接口進(jìn)行業(yè)務(wù)處理。
3.接下來(lái)就可以使用同樣的方式調(diào)用其他接口進(jìn)行相應(yīng)的業(yè)務(wù)處理了。業(yè)務(wù)功能接口中,提供了接入用戶的增刪改查等功能,還包括按賬號(hào)進(jìn)行服務(wù)申請(qǐng)或服務(wù)注銷等操作。
4.當(dāng)客戶端程序退出或是客戶端注銷時(shí),需調(diào)用logout(imcEndpointStr,sc)接口,進(jìn)行操作員注銷。
如圖2所示,考慮到客戶端在與IMC服務(wù)器通信過(guò)程中需對(duì)用戶的賬號(hào)密碼等敏感數(shù)據(jù)進(jìn)行加密,為了保證用戶可鑒別性和交互信息的安全性,設(shè)計(jì)采用了非對(duì)稱密鑰的加密體制,即公鑰和私鑰。由IMC自己生成client.ks和service.ks,service.ks通過(guò)client.cer獲得client的公鑰,client.ks通過(guò)service.cer獲取到server的公鑰,同時(shí)完成雙方的cer信息認(rèn)可。之后我們就可以對(duì)傳輸?shù)腟OAP報(bào)文進(jìn)行簽名和3DES加密。
在整合了IMC服務(wù)接口模塊后,自助服務(wù)系統(tǒng)就能對(duì)用戶賬號(hào)進(jìn)行智能的管理了,在前端門戶系統(tǒng)中增加對(duì)后臺(tái)Radius服務(wù)器操作的支持,既方便了廣大師生用戶維護(hù)自己的賬號(hào),又減輕了網(wǎng)絡(luò)管理員的工作負(fù)擔(dān),提高了管理效率。
圖2 設(shè)計(jì)采用了非對(duì)稱密鑰的加密體制
在網(wǎng)絡(luò)切換方案中,首先在之前所述的Radius服務(wù)器上通過(guò)接口得到認(rèn)證數(shù)據(jù)包,然后綁定用戶名與發(fā)送上來(lái)的終端設(shè)備MAC物理地址間的對(duì)應(yīng)關(guān)系。接著需要遍歷整個(gè)校園網(wǎng)的網(wǎng)絡(luò)交換機(jī),找到上述MAC與交換機(jī)網(wǎng)絡(luò)端口間的關(guān)系。通過(guò)MAC這個(gè)橋梁,就能實(shí)時(shí)得到用戶與網(wǎng)絡(luò)端口的映射表,以及該端口上的VLAN標(biāo)識(shí)號(hào)。最后系統(tǒng)就能自動(dòng)根據(jù)用戶申請(qǐng)的某個(gè)具體網(wǎng)絡(luò)業(yè)務(wù),配置相應(yīng)的VLAN,進(jìn)行網(wǎng)絡(luò)切換。
在自助服務(wù)系統(tǒng)中,設(shè)計(jì)通過(guò)SNMP網(wǎng)絡(luò)管理協(xié)議去獲取MAC與網(wǎng)絡(luò)設(shè)備端口的映像表。采用該協(xié)議是考慮到它是當(dāng)前網(wǎng)絡(luò)管理的標(biāo)準(zhǔn),絕大多數(shù)設(shè)備廠商都提供了對(duì)它的支持,且該協(xié)議基于UDP,面向無(wú)連接,傳輸數(shù)據(jù)效率較高。而上海財(cái)經(jīng)大學(xué)校園網(wǎng)本身網(wǎng)絡(luò)設(shè)備眾多,且需不時(shí)地進(jìn)行掃描更新,因此在這樣的體系架構(gòu)下采用此協(xié)議比較合適。
選擇SNMP4J開源包來(lái)實(shí)現(xiàn)底層協(xié)議傳輸。找到MIB樹中的dot1qTpFdbTable表,經(jīng)過(guò)某個(gè)網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)的單播物理地址信息被保存在該表中,dot1qTpFdbTable還包含了dot1qTpFdbPort和dot1qTpFdbStatus等只讀屬性的OID節(jié)點(diǎn),分別表示終端設(shè)備MAC物理地址,交換機(jī)端口,端口上的VLAN標(biāo)識(shí)號(hào)等。系統(tǒng)對(duì)這張表進(jìn)行讀取,將SNMP協(xié)議報(bào)文中的PDU類型設(shè)置成GETNEXT,不斷進(jìn)行輪詢直到讀取表的最后一行。
在設(shè)置網(wǎng)絡(luò)設(shè)備中的VLAN時(shí),選擇了dot1qPortVlanTable表中的dot1qPvid節(jié)點(diǎn)進(jìn)行操作。該OID節(jié)點(diǎn)表示經(jīng)過(guò)該設(shè)備端口轉(zhuǎn)發(fā)的tagged和ntagged幀的VLAN標(biāo)識(shí)號(hào),是可讀寫的。找到該表中需要設(shè)置的某行端口,將SNMP協(xié)議報(bào)文中的PDU類型設(shè)置成SET,數(shù)據(jù)類型為Integer32,執(zhí)行寫入操作。最后操作完成后還需對(duì)該設(shè)備上的MIB配置保存節(jié)點(diǎn)進(jìn)行寫入操作,將RAM內(nèi)存中的配置文件寫入到NVRAM啟動(dòng)配置文件中,以免RAM中的配置內(nèi)容斷電后丟失。
另外,在設(shè)置完成后,也需要定期將前面網(wǎng)絡(luò)設(shè)備各端口上的VLAN信息進(jìn)行保存,當(dāng)設(shè)備出現(xiàn)故障時(shí)方便網(wǎng)絡(luò)管理員進(jìn)行替換。對(duì)此,設(shè)計(jì)采用了Tftp協(xié)議,當(dāng)系統(tǒng)中保存網(wǎng)絡(luò)設(shè)備配置的線程被喚醒時(shí),在服務(wù)器上啟動(dòng)該協(xié)議的服務(wù)端守護(hù)進(jìn)程,自助服務(wù)系統(tǒng)則通過(guò)Telnet協(xié)議登錄到各網(wǎng)絡(luò)設(shè)備中,執(zhí)行保存到該Tftp服務(wù)器的操作。
根據(jù)上文所述,自助服務(wù)系統(tǒng)會(huì)根據(jù)用戶申請(qǐng)的不同網(wǎng)絡(luò)業(yè)務(wù),自動(dòng)在網(wǎng)絡(luò)設(shè)備端口上配置對(duì)應(yīng)的VLAN標(biāo)識(shí)。在絕大多數(shù)情況下,這種模式都是正確的。但不能排除某些意外的場(chǎng)景,比如用戶名本身有問(wèn)題等,這時(shí)就需要管理員的干預(yù)了。對(duì)此,專門設(shè)計(jì)了解決方案,在學(xué)校的微信企業(yè)號(hào)應(yīng)用中添加了一個(gè)網(wǎng)絡(luò)管理模塊,只有擁有該權(quán)限的用戶方可進(jìn)入,該模塊對(duì)一般用戶是不可見(jiàn)的。網(wǎng)絡(luò)管理員在應(yīng)用菜單中手工輸入用戶名等信息,系統(tǒng)會(huì)根據(jù)網(wǎng)絡(luò)管理協(xié)議的掃描結(jié)果找出與之對(duì)應(yīng)的網(wǎng)絡(luò)設(shè)備端口。然后管理員就可根據(jù)用戶的實(shí)際情況,在微信菜單提供的幾種網(wǎng)絡(luò)業(yè)務(wù)切換選項(xiàng)中進(jìn)行操作。
另外,將設(shè)備端口上的進(jìn)出流量及廣播組播等監(jiān)控參數(shù)集成了進(jìn)來(lái)。通過(guò)對(duì)MIB樹中ifXTable表里的ifHCInOctets、ifHCOutOctets、ifHCInBroadcastPkts、ifHCOutBroadcastPkts等參數(shù)進(jìn)行定時(shí)采樣,獲取網(wǎng)絡(luò)設(shè)備端口上各數(shù)值在一段時(shí)間內(nèi)的增量,進(jìn)而得出這段時(shí)間內(nèi)網(wǎng)絡(luò)設(shè)備端口上的流量及廣播包數(shù)據(jù)。該表將原先的32位類型數(shù)據(jù)升級(jí)到了64位,擴(kuò)充了對(duì)高流量網(wǎng)絡(luò)設(shè)備端口的支持。當(dāng)系統(tǒng)通過(guò)監(jiān)控發(fā)現(xiàn)某設(shè)備端口流量出現(xiàn)異?;蚴菑V播組播包數(shù)目異常,就會(huì)觸發(fā)服務(wù)告警,通過(guò)微信消息推送到相關(guān)人員進(jìn)行處理,同時(shí)該微信網(wǎng)絡(luò)管理應(yīng)用菜單中也包含了對(duì)該端口的斷開等操作,由管理員根據(jù)實(shí)際情況決定是否斷開某個(gè)異常端口,以保證校園網(wǎng)整體的穩(wěn)定運(yùn)行。利用該系統(tǒng),曾經(jīng)成功處理過(guò)一起故障。當(dāng)時(shí)系統(tǒng)偵測(cè)到某個(gè)交換機(jī)設(shè)備端口上廣播包數(shù)目異常,在5秒內(nèi)收到30多萬(wàn)個(gè)廣播數(shù)據(jù)包,通過(guò)微信消息通知,網(wǎng)絡(luò)管理員在1分鐘內(nèi)就鎖定了該端口。然后通過(guò)觀察,發(fā)現(xiàn)該端口下存在環(huán)路。因?yàn)榇罅康臄?shù)據(jù)包需要處理,進(jìn)而導(dǎo)致核心設(shè)備CPU使用率上升到了百分之六十多,全網(wǎng)出現(xiàn)故障。網(wǎng)絡(luò)管理員當(dāng)即斷開該端口,隨后整網(wǎng)恢復(fù)正常。正因?yàn)槲⑿磐ㄖ皶r(shí),操作方便,整個(gè)故障從出現(xiàn)到解決沒(méi)有超過(guò)2分鐘。
上述管理模塊是提供給網(wǎng)絡(luò)管理員使用的,隨著移動(dòng)微信的日益普及,上海財(cái)經(jīng)大學(xué)微信企業(yè)號(hào)的注冊(cè)師生用戶數(shù)已有16000多人,普及率超過(guò)95%,因此在設(shè)計(jì)自助服務(wù)系統(tǒng)時(shí)通過(guò)建立消息型應(yīng)用和配置自定義菜單,將自助服務(wù)系統(tǒng)用戶端的功能和網(wǎng)絡(luò)事件的通知也集成到了學(xué)校的微信企業(yè)號(hào)中,給一般用戶使用。
用戶點(diǎn)擊該微信企業(yè)號(hào)的自助服務(wù)應(yīng)用,通過(guò)手機(jī)相冊(cè)上傳身份證照片,補(bǔ)全個(gè)人信息,然后根據(jù)自己需要來(lái)選擇電信或聯(lián)通的上網(wǎng)卡,能直接使用手機(jī)微信來(lái)完成支付,系統(tǒng)后臺(tái)處理完成之后會(huì)將賬號(hào)密碼通過(guò)微信消息通知該用戶,完成整個(gè)流程。整個(gè)過(guò)程可隨身通過(guò)手機(jī)在1至2分鐘內(nèi)完成,簡(jiǎn)化了之前繁瑣的申請(qǐng)流程,給廣大師生帶來(lái)了極大方便。在日后使用過(guò)程中,用戶如遺忘了自己的賬號(hào),也隨時(shí)可通過(guò)該微信應(yīng)用找到自己名下所有的賬戶信息。當(dāng)某些網(wǎng)絡(luò)網(wǎng)段出現(xiàn)故障需要維護(hù),系統(tǒng)也會(huì)提前通過(guò)消息通知給相關(guān)用戶,讓他們獲知當(dāng)前網(wǎng)絡(luò)出現(xiàn)故障將中斷多長(zhǎng)時(shí)間,管理員正在盡快解決,增加了網(wǎng)絡(luò)服務(wù)的透明度。
支付方面,原先采用校園一卡通在pos機(jī)上刷卡的方式。效率低下,需要人工干預(yù),往往造成每年學(xué)生入學(xué)高峰期間長(zhǎng)時(shí)間的排隊(duì)。因此在設(shè)計(jì)自助服務(wù)系統(tǒng)的支付功能時(shí),摒棄了原先的做法,統(tǒng)一使用微信網(wǎng)上支付的方案。在架構(gòu)中添加了支付平臺(tái)這一層,它將前端業(yè)務(wù)商戶系統(tǒng)和后端微信支付系統(tǒng)隔離開來(lái),對(duì)業(yè)務(wù)系統(tǒng)來(lái)說(shuō)只需向支付平臺(tái)發(fā)送支付請(qǐng)求即可,不用關(guān)心財(cái)務(wù)賬號(hào)歸屬等細(xì)節(jié)問(wèn)題,降低了系統(tǒng)的耦合性。在自助服務(wù)系統(tǒng)中統(tǒng)一使用POST提交表單的方式,將參數(shù)傳遞到支付平臺(tái),支付平臺(tái)支持兩種模式JSAPI和微信掃碼支付。使用JSAPI用戶可以在微信內(nèi)打開網(wǎng)頁(yè),調(diào)起微信支付控件后輸入密碼完成訂單支付,支付平臺(tái)返回支付結(jié)果并跳轉(zhuǎn)到指定的頁(yè)面。而微信掃碼支付中支付平臺(tái)會(huì)返回訂單號(hào)和二維碼字符串給自助服務(wù)系統(tǒng),由系統(tǒng)將該字符串生成二維碼并顯示在網(wǎng)頁(yè)上,供用戶掃描二維碼進(jìn)行支付。
支付平臺(tái)的輸入及回調(diào)參數(shù)方面,設(shè)計(jì)了業(yè)務(wù)系統(tǒng)接入碼、業(yè)務(wù)系統(tǒng)訂單號(hào)、商品ID與描述、收費(fèi)金額、交費(fèi)人編號(hào)姓名、跳轉(zhuǎn)頁(yè)面的URL、時(shí)間戳等參數(shù),以及通過(guò)md5方式對(duì)上述參數(shù)進(jìn)行數(shù)據(jù)加密。平臺(tái)還設(shè)計(jì)提供了對(duì)賬統(tǒng)計(jì)功能,可通過(guò)api實(shí)時(shí)獲取微信支付平臺(tái)的信息,包括交易的金額與筆數(shù)、交易時(shí)間、支付方式等信息,與自助服務(wù)系統(tǒng)進(jìn)行比對(duì),核實(shí)兩者之間的數(shù)據(jù)是否匹配一致。
圖3是設(shè)計(jì)的自助服務(wù)系統(tǒng)后臺(tái)商戶JSAPI支付的整個(gè)流程。由系統(tǒng)生成圖文消息,展示給用戶。用戶打開微信客戶端點(diǎn)擊該圖文消息,在該客戶端網(wǎng)頁(yè)內(nèi)請(qǐng)求生成支付訂單,并向支付平臺(tái)發(fā)送支付請(qǐng)求,再由支付平臺(tái)向微信支付系統(tǒng)發(fā)起支付請(qǐng)求。微信支付系統(tǒng)生成預(yù)付單并將該信息返回支付平臺(tái),支付平臺(tái)根據(jù)預(yù)付單信息生成支付參數(shù)并將參數(shù)返回微信客戶端。
隨后用戶在微信客戶端發(fā)起支付并將參數(shù)傳遞給微信支付系統(tǒng),支付系統(tǒng)校驗(yàn)參數(shù)合法性和授權(quán),返回微信客戶端校驗(yàn)結(jié)果,并要求支付授權(quán)。微信客戶端提示用戶輸入密碼,用戶確認(rèn)訂單信息并支付,客戶端將支付授權(quán)發(fā)送給微信支付系統(tǒng)。微信支付系統(tǒng)異步通知支付平臺(tái)支付結(jié)果,同時(shí)支付平臺(tái)通知微信支付系統(tǒng)處理的結(jié)果,支付系統(tǒng)再通知微信客戶端支付結(jié)果,并發(fā)送微信消息提示。支付平臺(tái)異步通知自助服務(wù)系統(tǒng)支付結(jié)果,同時(shí)通知微信客戶端跳轉(zhuǎn)到指定頁(yè)面完成整個(gè)流程。
圖3 設(shè)計(jì)的自助服務(wù)系統(tǒng)后臺(tái)商戶JSAPI支付的流程
通過(guò)設(shè)計(jì)建設(shè)自助服務(wù)系統(tǒng),上海財(cái)經(jīng)大學(xué)網(wǎng)絡(luò)信息中心將網(wǎng)絡(luò)申請(qǐng)維護(hù)過(guò)程中一些原本孤立繁瑣的操作,包括管理員對(duì)Radius賬號(hào)的管理、查找文檔并登錄到網(wǎng)絡(luò)交換機(jī)中修改配置、對(duì)網(wǎng)絡(luò)環(huán)境的監(jiān)控、人工進(jìn)行pos刷卡繳費(fèi)、定時(shí)統(tǒng)計(jì)核實(shí)賬務(wù)情況、通知用戶綁定的賬號(hào)信息等過(guò)程進(jìn)行了優(yōu)化整合,實(shí)現(xiàn)了自動(dòng)化和智能化,且以該系統(tǒng)為核心統(tǒng)一進(jìn)行管理。
(作者單位為上海財(cái)經(jīng)大學(xué)教育技術(shù)中心)