1 引言
在現(xiàn)行的考試中大多采用傳統(tǒng)的證件核對(duì)或相片比對(duì)的身份認(rèn)證方式,冒名頂替和證件丟失現(xiàn)象時(shí)有發(fā)生,已經(jīng)成為中國這一考試大國一個(gè)頑癥。因而建立一套行之有效的考試身份認(rèn)證系統(tǒng)成為有關(guān)方面亟待解決的問題。生物識(shí)別技術(shù)以其特有的唯一性、永久性和防偽性等優(yōu)點(diǎn)使其在各種身份認(rèn)證系統(tǒng)中得到了廣泛的重視[1],大量的開發(fā)應(yīng)用研究正在逐漸實(shí)施中。有鑒于此,我們把生物識(shí)別技術(shù)引入到考試身份認(rèn)證系統(tǒng)中,并結(jié)合現(xiàn)在廣泛采用的面向服務(wù)的架構(gòu)(Service Oriented Architecture,SOA)技術(shù)來提高系統(tǒng)的通用性、重用性、穩(wěn)定性。
2 SOA架構(gòu)技術(shù)分析
考慮到考試身份認(rèn)證系統(tǒng)的擴(kuò)展性、可維護(hù)性以及未來的戰(zhàn)略性,在設(shè)計(jì)中使用了SOA架構(gòu)理念,在具體的設(shè)計(jì)和實(shí)現(xiàn)中使用.NET實(shí)現(xiàn)一個(gè)N層架構(gòu)。SOA技術(shù)當(dāng)前已經(jīng)成為軟件技術(shù)發(fā)展的一個(gè)重要方向,該架構(gòu)以實(shí)現(xiàn)交互式軟件間松耦合為目的。SOA架構(gòu)解決了CORBA和DCOM技術(shù)在解決軟件重用性和維護(hù)性上的不足??傮w來說,它具有松耦合、位置透明、代碼重用、統(tǒng)一服務(wù)、平臺(tái)獨(dú)立性等優(yōu)點(diǎn)[2]。
在SOA架構(gòu)的實(shí)現(xiàn)上Web服務(wù)是比較理想的方式,如圖1所示W(wǎng)eb服務(wù)是WS-I組織(ws-i.org)定義的一套共通的分布式應(yīng)用程序標(biāo)準(zhǔn),利用HTTP、XML、SOAP和WSDL這些標(biāo)準(zhǔn)規(guī)范,實(shí)現(xiàn)跨平臺(tái),跨語言,因特網(wǎng)的整合目的[3]。SOA是一個(gè)架構(gòu)上的概念,而Web服務(wù)是一個(gè)實(shí)現(xiàn)上的概念。所有的Web服務(wù)的實(shí)現(xiàn)都可歸類為SOA,但SOA的實(shí)現(xiàn)方式不僅僅只有Web服務(wù)一種,也可以使用CORBA,J2EE,COM+,Remoting等來實(shí)現(xiàn),因而這里采用Web服務(wù)方式來實(shí)現(xiàn)SOA架構(gòu)。
考慮到不同的考試應(yīng)用環(huán)境,有必要提供不同的服務(wù)接口。在考試身份認(rèn)證的分布點(diǎn)地域很大時(shí)勢(shì)必需要通過Internet,使用Web服務(wù)接口,它使系統(tǒng)具有跨越不同平臺(tái)的能力。而當(dāng)認(rèn)證局限在一個(gè)局域網(wǎng)的環(huán)境下,客戶應(yīng)用程序以.NET語言編寫,使用Remoting接口,它比Web服務(wù)的效率要高一些。
3 整體設(shè)計(jì)
一直以來生物認(rèn)證的技術(shù)在不斷發(fā)展,更有效、更快速的算法不斷涌現(xiàn),使用N層架構(gòu)易于今后的維護(hù)和升級(jí),升級(jí)時(shí)只需要對(duì)考試身份認(rèn)證層做改動(dòng),對(duì)其他層次的改動(dòng)可以降到最低。就使用的客戶角度來講,系統(tǒng)主要是要提供身份的認(rèn)證,不過考慮系統(tǒng)數(shù)據(jù)庫的建立,考試身份認(rèn)證系統(tǒng)應(yīng)提供兩種服務(wù):注冊(cè)用戶和認(rèn)證用戶。為此,整個(gè)系統(tǒng)的邏輯實(shí)現(xiàn)框圖如圖2所示。[nextpage]
整個(gè)考試身份認(rèn)證系統(tǒng)介于客戶應(yīng)用程序的客戶端和服務(wù)端之間??蛻魬?yīng)用程序有兩類:自身沒有認(rèn)證系統(tǒng)的客戶程序和自身擁有認(rèn)證系統(tǒng)的客戶程序??蛻魬?yīng)用程序的客戶端先要通過考試身份認(rèn)證系統(tǒng)的認(rèn)證,才能與客戶應(yīng)用程序的服務(wù)端通信。自己沒有認(rèn)證系統(tǒng)的客戶程序與自己擁有認(rèn)證系統(tǒng)的客戶程序相比,需要與數(shù)據(jù)庫交互。
在設(shè)計(jì)中,整個(gè)考試身份認(rèn)證系統(tǒng)邏輯上可以分為三層:接口層,生物認(rèn)證層和數(shù)據(jù)層。其中接口層由Web服務(wù)層和生物外觀層組成,這兩層合作解決了與其他應(yīng)用程序集成的問題。如果客戶程序是以.NET語言編寫,且運(yùn)行在局域網(wǎng)中,則可以使用Remoting技術(shù)直接調(diào)用生物外觀層來使用服務(wù)。如果不是使用.NET語言編寫,且需要跨越因特網(wǎng),則可以調(diào)用Web服務(wù)層以享用服務(wù)。Web服務(wù)在實(shí)現(xiàn)上是通過委托給生物外觀層實(shí)現(xiàn)的。而生物外觀層解決了與不同算法的生物認(rèn)證、不同類型的生物認(rèn)證集成的問題。
4 考試身份認(rèn)證系統(tǒng)的技術(shù)實(shí)現(xiàn)
如圖3中,客戶應(yīng)用程序接收考試身份認(rèn)證系統(tǒng)的服務(wù),但它不屬于考試身份認(rèn)證系統(tǒng)的一部分,因而用虛線表示。就需要的服務(wù)來說,有兩種類型的客戶程序,一種是本身沒有認(rèn)證系統(tǒng),對(duì)于這種客戶應(yīng)用程序,考試身份認(rèn)證系統(tǒng)提供了完整的解決方案,它提供注冊(cè)和認(rèn)證兩種服務(wù)。另一種應(yīng)用程序是本身已經(jīng)有認(rèn)證方案,需要借助于生物識(shí)別方式進(jìn)行更加安全的認(rèn)證,對(duì)于這種客戶應(yīng)用程序,考試身份認(rèn)證系統(tǒng)提供了抽取特征值,比較特征值等服務(wù)。這兩種服務(wù)在實(shí)現(xiàn)上的區(qū)別是前者需要與數(shù)據(jù)庫打交道,在數(shù)據(jù)庫中存儲(chǔ)用戶信息,而后者不需要。
就運(yùn)行環(huán)境來說,有兩種類型的服務(wù),一種是運(yùn)行在因特網(wǎng)上,用各種各樣的語言編寫,這類應(yīng)用程序可以使用HTTP+SOAP方式訪問Web服務(wù)層,為了提高性能和安全性,Web服務(wù)層利用了最新的WSE2.0技術(shù)加強(qiáng)Web服務(wù);另一種運(yùn)行在局域網(wǎng)中,以.NET語言編寫的客戶應(yīng)用程序,這一類應(yīng)用程序可以使用Remoting訪問生物外觀層。Remoting方式在性能上優(yōu)于Web服務(wù)方式。
生物外觀層的存在有兩重意義,一是如果服務(wù)的消費(fèi)者所運(yùn)行的環(huán)境比較一致(對(duì)于本考試身份認(rèn)證系統(tǒng)而言,即運(yùn)行在微軟平臺(tái)上),則客戶應(yīng)用程序可以使用Remoting技術(shù)直接與外觀層進(jìn)行交互,以提高效率。二是簡化了Web Service層的實(shí)現(xiàn)——Web服務(wù)層的實(shí)現(xiàn)實(shí)際上是委托給生物外觀層實(shí)現(xiàn)的,Web服務(wù)層只是對(duì)生物外觀層做了一次包裝,將其包裝成了Web服務(wù)。[nextpage]
生物認(rèn)證層是實(shí)際進(jìn)行生物認(rèn)證的地方,這一層中使用了抽象工廠的設(shè)計(jì)模式,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)“插件框架”。由于各種生物認(rèn)證原理是一樣的,既獲取生物圖像à獲取生物圖像的特征值à比對(duì)生物特征值,因此將不同第三方提供的生物認(rèn)證技術(shù)作為插件(Plug-In),由一個(gè)工廠以即插即用的方式生成插件,使客戶程序可以根據(jù)某個(gè)特定條件動(dòng)態(tài)尋找、生成乃至升級(jí)插件,保證了系統(tǒng)的最大擴(kuò)展性。
對(duì)數(shù)據(jù)庫的訪問是通過數(shù)據(jù)訪問層調(diào)用存儲(chǔ)過程實(shí)現(xiàn)的,存儲(chǔ)過程相對(duì)于SQL語句具有性能好、易維護(hù)、安全等優(yōu)點(diǎn)。
由于系統(tǒng)的各個(gè)層次(除了存儲(chǔ)過程和數(shù)據(jù)庫之外),都可能拋出異常,為了統(tǒng)一的處理異常,設(shè)計(jì)了一個(gè)異常處理層,這種設(shè)計(jì)方法,不僅使異常處理統(tǒng)一化,而且易于管理和維護(hù);并且異常處理層與實(shí)際的業(yè)務(wù)流程分開,可以使異常處理模塊變成一個(gè)實(shí)用(Utility)類,不用修改或只要稍作修改就可應(yīng)用于其他系統(tǒng)的異常處理中。這種設(shè)計(jì)方式也體現(xiàn)了當(dāng)今軟件開發(fā)的流行趨勢(shì),即提高軟件(代碼)的重用性。
從邏輯上來說,考試身份認(rèn)證系統(tǒng)可以分為:Web Service層、生物外觀層、生物認(rèn)證層、數(shù)據(jù)訪問層、存儲(chǔ)過程層、數(shù)據(jù)庫層、異常處理層,異常處理層應(yīng)該部署在每個(gè)物理層中。下面將對(duì)主要的生物認(rèn)證層的具體集成問題作闡述。
5 生物認(rèn)證層的設(shè)計(jì)考慮
生物認(rèn)證在原理上都是抽取特征值、比對(duì)生物特征值,只是具體的抽取方法和比對(duì)算法有所不同。生物認(rèn)證層要做到將不同的算法、不同類型的生物識(shí)別做成一個(gè)個(gè)插件(plug-in),在該層中有一個(gè)“工廠”,根據(jù)特定的規(guī)則找到某個(gè)特定的插件,然后動(dòng)態(tài)生成插件??蓴U(kuò)展的考試身份認(rèn)證系統(tǒng)采用了抽象工廠(Abstract Factory)的設(shè)計(jì)模式,在《Design Patterns》一文中對(duì)它的定義如下:為一系列相關(guān)或者相互依賴的對(duì)象提供一個(gè)接口,而不必指定這些對(duì)象的具體類[4]。由此抽象出了一個(gè)共同的接口IBioProcess,該接口定義提供了生物識(shí)別應(yīng)該具備的所有功能,如下所示。
Public interface IBioProcess{
featureBuf ExtractImageFeature();
featureBuf ExtractFileFeature();
int CheckImageFile();
File GenerateImageFileBuffer();
int JudgeQuality();
int DiscernFeature();
不同第三方提供的生物認(rèn)證技術(shù)是實(shí)現(xiàn)該接口的具體類。對(duì)于客戶來說,與其交互的是該抽象接口,而不是那些具體類(也無法知道有哪些類)。這種設(shè)計(jì)模式保證本系統(tǒng)具有低耦合性(loose coupling)和高凝聚性(high cohesion)。
第三方提供的生物認(rèn)證類應(yīng)該從IBioProcess接口繼承,但這并不是必須的,可以對(duì)第三方提供的生物認(rèn)證技術(shù)進(jìn)行包裝,使包裝類從IBioProcess接口繼承,這些類或者包裝類以插件(Plug-In)的形式存在,它能夠被即插即用(Plug-and-Play)。抽象工廠的設(shè)計(jì)模式在生物認(rèn)證層的具體應(yīng)用可以由圖4表示。在這里,Dynamic Factory是個(gè)概念上的類,在實(shí)際實(shí)現(xiàn)時(shí)由兩個(gè)類組成,它的作用是動(dòng)態(tài)尋找、加載、生成、升級(jí)、卸載插件,客戶端程序通過Dynamic Factory得到IBioProcess接口。
6 結(jié)束語
通過提出SOA架構(gòu)用于考試身份認(rèn)證系統(tǒng)中能提供一個(gè)高通用性、重用性、穩(wěn)定性的軟件框架。使用了抽象工廠的設(shè)計(jì)模式來實(shí)現(xiàn)了對(duì)系統(tǒng)多種現(xiàn)有以及未來生物認(rèn)證方式的支持,使得系統(tǒng)具有前瞻性和擴(kuò)展性。最后,框架還應(yīng)該對(duì)系統(tǒng)安全作深入考慮,主要是數(shù)據(jù)傳輸過程的安全性和數(shù)據(jù)存儲(chǔ)過程的安全性,可以考慮加密及WS-Security協(xié)議等手段來解決,但這也勢(shì)必降低系統(tǒng)的效率。