夏 斌
(1. 中國海洋大學(xué),山東 青島 266100;2. 壽光市安監(jiān)局,山東 壽光 262700)
隨著 Java2平臺在企業(yè)類系統(tǒng)和電子商務(wù)系統(tǒng)中的大量應(yīng)用,對 J2EE平臺的安全性要求也隨之提高。安全性攻擊伴隨Internet技術(shù)的發(fā)展變得越來越頻繁,如果J2EE體系結(jié)構(gòu)沒有設(shè)置安全機(jī)制,很可能會導(dǎo)致懷有敵意的程序造成信息丟失、資料泄密、相信偽造數(shù)據(jù)和修改本地計(jì)算機(jī)安全設(shè)置等后果。要保證J2EE平臺的安全性,其安全保障體系形成至關(guān)重要。
J2EE平臺的安全機(jī)制是一個(gè)動態(tài)可擴(kuò)展的安全體系結(jié)構(gòu),是基于標(biāo)準(zhǔn)的交互操作的平臺。其安全特性有密碼學(xué)、認(rèn)證、授權(quán)、PKI基礎(chǔ)設(shè)施等。對安全性的支持主要是通過Java語言本身安全性、虛擬機(jī)的類加載器和安全管理器以及Java提供的安全API幾個(gè)方面來實(shí)現(xiàn)?;究蚣?,見圖1。
圖1 J2EE安全體系的基本框架
JAAS(Java Authentication and Authorization Ser-vice),Java認(rèn)證和授權(quán)服務(wù),是Sun為了進(jìn)一步增強(qiáng)Java2安全框架的功能而提供的編程接口,其目的是提供基于代碼運(yùn)行者的存取控制能力,它是JDK1.3的標(biāo)準(zhǔn)擴(kuò)充,并成為JDK1.4的一個(gè)組成部分。JSSE是專門針對SSL協(xié)議開發(fā)的安全擴(kuò)展模塊,它提供了對應(yīng)不同SSL實(shí)現(xiàn)的標(biāo)準(zhǔn)接口。JAAS提供了驗(yàn)證用戶和對用戶實(shí)現(xiàn)訪問控制的接口。
當(dāng)用戶認(rèn)證之后,用戶認(rèn)證狀態(tài)的安全持久保持和驗(yàn)證通過安全會話進(jìn)行,認(rèn)證器認(rèn)證用戶后會使用會話管理器建立一個(gè)安全會話,將所有用戶的安全信息和會話綁定。會話管理器負(fù)責(zé)統(tǒng)一管理所有用戶認(rèn)證之后的安全會話,會話管理功能可分為兩類:操作型和管理型。會話管理對象模型,見圖2。
圖2 會話管理模型
目前有兩種方法保持Session會話狀態(tài),一種是在客戶端保存Session狀態(tài);另一種是在服務(wù)器端保存Session狀態(tài)。在客戶端保持 Session狀態(tài)有兩個(gè)好處:①相對容易實(shí)現(xiàn),如采用HTTP hidden變量或者HTTP cookies來保存會話狀態(tài);②如果需要記錄的狀態(tài)量較少,工作效率高。
J2EE規(guī)范對 Web層的認(rèn)證機(jī)制給出了具體的定義。Web層的認(rèn)證機(jī)制有四種:HTTP基本認(rèn)證、基于FORM的認(rèn)證、HTTPS的相互認(rèn)證和混合認(rèn)證。
3.3.1 EJB方法訪問控制
訪問權(quán)限定義調(diào)用方法的一個(gè)或多個(gè)安全角色,如果調(diào)用標(biāo)識是角色表示中的一個(gè)成員,容器將允許這個(gè)方法調(diào)用繼續(xù)執(zhí)行。否則,EJB容器將發(fā)出一個(gè)java.rmi.RemoteException的異常信息,且禁止調(diào)用的執(zhí)行。
3.3.2 單點(diǎn)登錄技術(shù)
單點(diǎn)登錄(Single Sign-On)是實(shí)現(xiàn)Web環(huán)境下安全訪問的一個(gè)關(guān)鍵技術(shù)。由于系統(tǒng)間互相獨(dú)立,一個(gè)用戶在使用每個(gè)應(yīng)用系統(tǒng)前,都必須按照相應(yīng)的系統(tǒng)身份進(jìn)行系統(tǒng)登錄。用戶必須記住每個(gè)系統(tǒng)的用戶名和密碼,而且需要頻繁地輸入口令,出錯(cuò)可能性較大,增加了安全風(fēng)險(xiǎn)。借助單點(diǎn)登錄技術(shù),用戶可以基于最初訪問網(wǎng)絡(luò)時(shí)的一次身份驗(yàn)證,對被授權(quán)的網(wǎng)絡(luò)資源進(jìn)行無縫的訪問,在此條件下,管理員無需修改或干涉用戶登錄就能方便地得到應(yīng)有安全控制,從而提高整體的安全性能。
J2EE體系結(jié)構(gòu)對信息安全提供了靈活框架,只要使用得當(dāng)就能很好的保證信息的安全性,降低了應(yīng)用開發(fā)的代價(jià)和風(fēng)險(xiǎn),同時(shí)也要加強(qiáng)一些其他相關(guān)的安全工作,比如保護(hù)好私鑰等,這樣才能保證J2EE安全框架發(fā)揮最大的作用。隨著信息技術(shù)的不斷發(fā)展,信息安全也會面臨越來越大的挑戰(zhàn),這些都需要J2EE安全框架更加完善和進(jìn)一步發(fā)展。
1 高月、梁本亮.基于JAAS的JAVA安全應(yīng)用研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2005(1):68~70