亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于JAAS安全機(jī)制的J2EE Web系統(tǒng)用戶身份認(rèn)證設(shè)計(jì)

        2011-03-02 07:37:12劉景林
        關(guān)鍵詞:用戶系統(tǒng)

        劉景林

        (泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院 信息技術(shù)系,福建 泉州 362000)

        基于JAAS安全機(jī)制的J2EE Web系統(tǒng)用戶身份認(rèn)證設(shè)計(jì)

        劉景林

        (泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院 信息技術(shù)系,福建 泉州 362000)

        在J2EE Web系統(tǒng)中應(yīng)用JAAS技術(shù)提供的動(dòng)態(tài)、可插拔認(rèn)證模型實(shí)現(xiàn)用戶身份的安全認(rèn)證.通過(guò)X.509數(shù)字證書(shū)和用戶口令進(jìn)行雙重堆疊認(rèn)證,在Tomcat服務(wù)器上配置實(shí)現(xiàn)服務(wù)器與客戶端之間的SSL雙向認(rèn)證,并通過(guò)建立HTTPS連接以保護(hù)數(shù)據(jù)的安全傳輸,進(jìn)一步提高系統(tǒng)用戶認(rèn)證的安全性.

        JAAS安全機(jī)制;J2EE應(yīng)用系統(tǒng);身份認(rèn)證;數(shù)字證書(shū)

        隨著Java技術(shù)應(yīng)用的不斷普及,J2EE(Java 2 Platform Enterprise Edition)已日漸成為企業(yè)級(jí)軟件開(kāi)發(fā)的首選平臺(tái),基于J2EE架構(gòu)的Web系統(tǒng)廣泛應(yīng)用于電子政務(wù)、電子商務(wù)及網(wǎng)上銀行等安全性要求較高的領(lǐng)域,但由于互聯(lián)網(wǎng)中存在諸多不安全因素,如何在實(shí)現(xiàn)網(wǎng)上業(yè)務(wù)的同時(shí)提高系統(tǒng)用戶認(rèn)證和數(shù)據(jù)傳輸?shù)确矫娴陌踩殉蔀橄到y(tǒng)開(kāi)發(fā)人員關(guān)注的重點(diǎn).JAAS(Java Authentication and Authorization Service)技術(shù)作為Java2安全體系結(jié)構(gòu)的一個(gè)重要組成部分,其主要功能是實(shí)現(xiàn)用戶認(rèn)證與訪問(wèn)控制.JAAS側(cè)重于通過(guò)驗(yàn)證運(yùn)行代碼的用戶及其權(quán)限來(lái)保護(hù)系統(tǒng)免受攻擊,通過(guò)在應(yīng)用程序和底層的驗(yàn)證與授權(quán)機(jī)制之間加入一個(gè)抽象層,該抽象層可以簡(jiǎn)化涉及到 Java.Security包的程序開(kāi)發(fā),由于抽象層具有獨(dú)立于平臺(tái)的特性,使得各種不同的安全機(jī)制和應(yīng)用程序級(jí)代碼隔離,從而支持多種不同的安全認(rèn)證方式[1-4].JAAS認(rèn)證建立在可插入的認(rèn)證模塊(Pluggable Authentication Module,PAM)的安全體系結(jié)構(gòu)之上[5],這可使J2EE應(yīng)用系統(tǒng)獨(dú)立于底層的認(rèn)證技術(shù),方便其靈活地選擇、修改所使用的認(rèn)證技術(shù),也可以實(shí)現(xiàn)多種認(rèn)證機(jī)制的堆疊認(rèn)證,本文基于 JAAS安全機(jī)制在J2EE Web系統(tǒng)實(shí)現(xiàn)了用戶身份的安全認(rèn)證.

        1 基于JAAS安全機(jī)制的用戶認(rèn)證方案設(shè)計(jì)

        1.1 創(chuàng)建JAAS登錄配置文件

        在使用JAAS安全機(jī)制實(shí)現(xiàn)用戶身份認(rèn)證過(guò)程中,需要?jiǎng)?chuàng)建一個(gè)登錄配置文件以指明系統(tǒng)登錄時(shí)所使用的認(rèn)證模塊,該登錄配置文件可以由一個(gè)或多個(gè)項(xiàng)組成,每個(gè)項(xiàng)為某個(gè)特定的應(yīng)用指定底層所使用的認(rèn)證模塊.在本例系統(tǒng)中,首先實(shí)例化一個(gè)登錄上下文LoginContext對(duì)象lc,并傳入2個(gè)參數(shù):第1個(gè)參數(shù)為“JAASExample”,即為登錄配置文件jaas.conf中的一個(gè)項(xiàng)的名字,LoginContext將自動(dòng)讀取并加載登錄配置文件中該項(xiàng)名稱(chēng)對(duì)應(yīng)指定的登錄模塊;創(chuàng)建一個(gè)UsrPwdServletCallbackHandler實(shí)例對(duì)象作為L(zhǎng)oginContext初始化時(shí)的第2個(gè)參數(shù),該類(lèi)用于獲取認(rèn)證用戶的用戶名和密碼.LoginContext初始化一個(gè)新的、空的javax.security.auth.Subject對(duì)象,通過(guò)使用該 Subject對(duì)象和 UsrPwdServletCallbackHandler對(duì)象初始化 UserModule認(rèn)證模塊.此時(shí)LoginContext將此UsrPwdServletCallbackHandler實(shí)例對(duì)象轉(zhuǎn)交給參數(shù)“JAASExample”指定的底層認(rèn)證模塊UserModule.當(dāng)認(rèn)證模塊需要與用戶交互獲取用戶名和密碼時(shí),登錄認(rèn)證模塊不直接與用戶打交道,而是通過(guò)調(diào)用 UsrPwdServletCallbackHandler對(duì)象來(lái)執(zhí)行與用戶的交互.一旦構(gòu)建好LoginContext對(duì)象之后,就可以利用該對(duì)象的login方法執(zhí)行認(rèn)證過(guò)程,LoginContext的login方法通過(guò)調(diào)用底層認(rèn)證模塊的login方法執(zhí)行具體的登錄認(rèn)證.

        1.2 自定義回調(diào)處理器

        自定義的用戶交互類(lèi)UsrPwdServletCallbackHandler實(shí)現(xiàn)了CallbackHandler接口,該類(lèi)用于獲取認(rèn)證信息(如用戶名和密碼),LoginContext將該 CallbackHandler實(shí)例對(duì)象傳遞給底層的UserModule登錄認(rèn)證模塊.在 UsrPwdServletCallbackHandler()構(gòu)造方法中傳入獲取的用戶名和密碼,首先將用戶名和密碼保存在對(duì)象的屬性中,然后提取注冊(cè)到其中的所有Callback實(shí)例,將用戶名和密碼傳遞給相應(yīng)的Callback實(shí)例,該用戶交互類(lèi)主要實(shí)現(xiàn)如下:

        以上的handle方法通過(guò)遍歷Callback數(shù)組中的各個(gè)元素,提取注冊(cè)到CallbackHandler中的所有Callback實(shí)例,將用戶名和密碼傳遞給相應(yīng)的NameCallback實(shí)例和PasswordCallback實(shí)例.

        1.3 自定義登錄認(rèn)證模塊

        當(dāng)系統(tǒng)在執(zhí)行LoginContext對(duì)象的login()方法登錄時(shí),將依次自動(dòng)調(diào)用登錄配置文件中設(shè)置的各個(gè)指定登錄模塊的login()方法來(lái)實(shí)現(xiàn)登錄驗(yàn)證.本例中分別使用基于用戶口令的登錄認(rèn)證模塊UserModule和基于用戶證書(shū)的認(rèn)證模塊CertModule共同實(shí)現(xiàn)用戶的身份認(rèn)證,只有全部通過(guò)兩種認(rèn)證模塊的驗(yàn)證才能實(shí)現(xiàn)成功登錄.

        1.3.1 自定義用戶信息登錄模塊UserModule

        用戶個(gè)人信息登錄模塊UserModule通過(guò)獲取用戶名和密碼實(shí)現(xiàn)認(rèn)證.該認(rèn)證模塊給回調(diào)處理器的handle()方法傳遞一個(gè)適當(dāng)?shù)腃allback類(lèi)型的callbacks字節(jié)數(shù)組,callbacks含有用于獲取用戶名的NameCallback類(lèi)型對(duì)象和用于獲取密碼的PasswordCallback類(lèi)型對(duì)象,然后CallbackHandler執(zhí)行所請(qǐng)求的用戶交互,并將適當(dāng)?shù)闹荡嫒隿allbacks數(shù)組,登錄認(rèn)證模塊通過(guò)從callbacks數(shù)組中獲取用戶名與密碼.最后由自定義的UserProxy類(lèi)訪問(wèn)MySQL數(shù)據(jù)庫(kù)中的用戶信息表,通過(guò)調(diào)用validateUser()方法以驗(yàn)證輸入的用戶登錄信息是否與數(shù)據(jù)庫(kù)用戶表中某一用戶信息相匹配.

        1.3.2 自定義證書(shū)認(rèn)證模塊CertModule

        證書(shū)認(rèn)證模塊CertModule主要實(shí)現(xiàn)客戶證書(shū)的驗(yàn)證.首先在Tomcat服務(wù)器中配置HTTPS安全協(xié)議和雙向SSL認(rèn)證,當(dāng)用戶通過(guò)HTTPS方式訪問(wèn)Web站點(diǎn)時(shí),則要求出示客戶證書(shū).人同一CA頒發(fā)的所有證書(shū)都有一個(gè)唯一的、不重復(fù)的證書(shū)序列號(hào),因此可利用證書(shū)序列號(hào)作為用戶身份的標(biāo)志.服務(wù)器獲取客戶證書(shū)并將客戶數(shù)字證書(shū)存到當(dāng)前會(huì)話的“javax.servlet.request.X509 Certificate”屬性中,在CertModule登錄模塊的login()方法中將得到的客戶證書(shū)的序列號(hào)與MySQL數(shù)據(jù)庫(kù)中保存的證書(shū)序列號(hào)字段進(jìn)行比較,以認(rèn)證用戶身份.在讀取客戶端數(shù)字證書(shū)時(shí),可以使用request.getAttribute()方法獲得X509Certificate數(shù)組,再讀取X509Certificate對(duì)象中的序列號(hào).

        2 系統(tǒng)測(cè)試

        2.1 系統(tǒng)開(kāi)發(fā)環(huán)境

        本系統(tǒng)的軟件開(kāi)發(fā)測(cè)試平臺(tái)是基于JDK1.5,J2EE Web服務(wù)器使用Apache Tomcat5.5,用戶個(gè)人身份信息存放于MySQL5.0開(kāi)源數(shù)據(jù)庫(kù).

        2.2 系統(tǒng)設(shè)計(jì)的關(guān)鍵步驟

        1)構(gòu)建并布署J2EE Web應(yīng)用

        創(chuàng)建名稱(chēng)為myApp的J2EE Web應(yīng)用,其文檔結(jié)構(gòu)和系統(tǒng)登錄頁(yè)面如圖1所示.

        圖1中的login.jsp為系統(tǒng)測(cè)試用的登錄頁(yè)面,loginprocess.jsp為登錄處理頁(yè)面,實(shí)現(xiàn)成功登錄時(shí)轉(zhuǎn)入訪問(wèn)系統(tǒng)資源,否則提示出錯(cuò),要求重新進(jìn)行登錄.在auth文件夾中存放自定義的登錄認(rèn)證模塊UserModule和CertModule以及自定義的回調(diào)處理器類(lèi)UsrPwdServletCallbackHandler.java;在WEB-INF文件夾的classes存放auth文件夾中所有java源程序相應(yīng)的.class文件以及第三方的jar包.最后將整個(gè)系統(tǒng)打包生成myApp.war文件,將該文件復(fù)制到Tomcat的安裝目錄下的webapps文件夾進(jìn)行布署.

        圖1 J2EE Web應(yīng)用文檔結(jié)構(gòu)與登錄頁(yè)面

        2)利用OpenSSL工具構(gòu)建數(shù)字證書(shū)

        使用OpenSSL構(gòu)建自簽名根證書(shū),并使用該根證書(shū)分別簽發(fā)服務(wù)器證書(shū)和客戶證書(shū),由于CA根證書(shū)為自簽發(fā)的,未經(jīng)權(quán)威CA認(rèn)證,因此應(yīng)將根證書(shū)分別導(dǎo)入到服務(wù)器與客戶機(jī)瀏覽器中的“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”中;在服務(wù)器端分別將根證書(shū)和服務(wù)器證書(shū)復(fù)制到Tomcat安裝目錄下的conf文件夾;在客戶機(jī)瀏覽器中導(dǎo)入客戶證書(shū),以便服務(wù)器與客戶端相互認(rèn)證對(duì)方的證書(shū).另外,要實(shí)現(xiàn)客戶機(jī)的證書(shū)認(rèn)證,還必須將所頒發(fā)的客戶證書(shū)的序列號(hào)及用戶個(gè)人信息存放在MySQL數(shù)據(jù)庫(kù)中的用戶信息表.

        3)配置Tomcat服務(wù)器

        首先在Apache tomcat 5.5中的“configure Tomcat”項(xiàng)中指定JAAS登錄配置文件jaas.conf的位置(如圖2),以便告知Java虛擬機(jī)JAAS配置文件的所在位置,也可通過(guò)修改%JAVA_HOME%jrelib security文件夾下的 java.security文件,在其中添加一行代碼“java.security.auth.login.config= d:myAppWEB-INFjaas.conf”來(lái)實(shí)現(xiàn),其中“d:myApp”為J2EE應(yīng)用系統(tǒng)所在的文件夾,最后啟動(dòng)Tomcat服務(wù)器.

        接下來(lái)在Tomcat服務(wù)器中配置HTTPS安全協(xié)議及雙向 SSL認(rèn)證,編輯 Tomcat安裝目錄下的confserver.xml文件如下:

        圖2 Tomcat中配置JAAS登錄配置文件

        其中clientAuth設(shè)置為“true”,意味著服務(wù)器與客戶機(jī)之間實(shí)現(xiàn)相互提交證書(shū)進(jìn)行認(rèn)證[5].

        4)客戶機(jī)通過(guò)HTTPS方式訪問(wèn)服務(wù)器

        當(dāng)客戶通過(guò)瀏覽器以HTTPS方式訪問(wèn)系統(tǒng)服務(wù)器時(shí),要進(jìn)行客戶證書(shū)的確認(rèn).在系統(tǒng)登錄過(guò)程中出現(xiàn)要求提交客戶證書(shū)的對(duì)話框時(shí),用戶可以選擇所使用的客戶端數(shù)字證書(shū),服務(wù)器獲取客戶證書(shū)并提取其證書(shū)序列號(hào)進(jìn)行驗(yàn)證,當(dāng)用戶名與口令以及客戶數(shù)字證書(shū)的驗(yàn)證都通過(guò)之后才能成功登錄系統(tǒng)進(jìn)行訪問(wèn).

        3 結(jié)論

        在J2EE Web系統(tǒng)用戶登錄驗(yàn)證過(guò)程中,利用JAAS提供的動(dòng)態(tài)、可插拔認(rèn)證模型實(shí)現(xiàn)基于用戶口令與X509數(shù)字證書(shū)的雙重堆疊認(rèn)證,使用服務(wù)器證書(shū)與客戶證書(shū)實(shí)現(xiàn)雙方相互間的 SSL雙向認(rèn)證,并通過(guò)HTTPS連接實(shí)現(xiàn)數(shù)據(jù)的安全傳輸.實(shí)踐證明,該認(rèn)證方案相對(duì)于基于用戶口令或數(shù)字證書(shū)等其他單方面認(rèn)證,既可以實(shí)現(xiàn)服務(wù)器對(duì)客戶端的雙重認(rèn)證,有效防止非授權(quán)用戶的非法訪問(wèn),較好地解決系統(tǒng)用戶的安全認(rèn)證問(wèn)題,又可以實(shí)現(xiàn)客戶端對(duì)服務(wù)器的認(rèn)證,防止登錄到假冒的服務(wù)器,同時(shí)能保證認(rèn)證雙方所傳輸數(shù)據(jù)的安全,進(jìn)一步增強(qiáng)了Web系統(tǒng)的安全性.

        [1]彭超,馬丁.新一代JSP網(wǎng)絡(luò)編程入門(mén)與實(shí)踐[M].北京:清華大學(xué)出版社,2007:310.

        [2]馬臣云,王彥.精通PKI網(wǎng)絡(luò)安全認(rèn)證技術(shù)與編程實(shí)現(xiàn)[M].北京:人民郵電出版社,2008:398-400.

        [3]梁棟.Java加密與解密的藝術(shù)[M].北京:機(jī)械工業(yè)出版社,2010:341-350.

        [4]羅銳,程文青.Java安全體系在Web程序中的研究和應(yīng)用[J].計(jì)算機(jī)應(yīng)用與研究,2006(7):113-114.

        [5]朱福喜,傅建明,唐曉軍.JAVA項(xiàng)目設(shè)計(jì)與開(kāi)發(fā)范例[M].北京:電子工業(yè)出版社,2005:253.

        The Design of User Identity Authentication in J2EE Web System Based on JAAS Security Mechanism

        LIU Jing-lin
        (Department of Information Technology,Quanzhou Vocational and Technical College of Economy and Trade,Quanzhou 362000,China)

        In the J2EE Web application system,JAAS technology is used to provide a dynamic, pluggable authentication model to achieve the authentication of user security,i.e.,through the double stack authentication of X.509 digital certification and user authentication password.The SSL mutual authentication is set up in the Tomcat to achieve authentication between the server and client and HTTPS connections are established to protect the security of data transmission and further improve the security of user authentication.

        JAAS security;J2EE applications;authentication;digital certification

        ?

        TP309

        A

        1006-7302(2011)03-0074-05

        2011-03-24

        劉景林(1971—),男,福建省泉州人,講師,碩士,研究方向?yàn)镴2EE應(yīng)用開(kāi)發(fā)、網(wǎng)絡(luò)安全.

        猜你喜歡
        用戶系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        關(guān)注用戶
        關(guān)注用戶
        關(guān)注用戶
        Camera360:拍出5億用戶
        av黄页网国产精品大全| 中文字幕人成人乱码亚洲| 亚洲国产精品第一区二区三区| 日本一区二区不卡在线| 成人免费无码视频在线网站| 人妻少妇69久久中文字幕| 亚洲女同一区二区| 夜爽8888视频在线观看| 丰满少妇又紧又爽视频| 少妇我被躁爽到高潮在线影片 | 欧美第一黄网免费网站| 揄拍成人国产精品视频肥熟女| 中文字幕日韩精品亚洲精品| 午夜久久久久久禁播电影| 国产97色在线 | 亚洲| 高清国产一级毛片国语| 色综合久久精品中文字幕| 豆国产96在线 | 亚洲| 午夜亚洲av永久无码精品| 久久露脸国产精品WWW| 亚洲韩日av中文字幕| 国产精品性色av麻豆| 精品国产一区二区三区av性色| 五月天精品视频在线观看| 极品粉嫩小仙女高潮喷水视频| 亚洲天堂一区二区偷拍| 国产精品成人aaaaa网站| 激情丁香婷婷| 免费高清日本一区二区| 免费a级毛片高清在钱| 久久精品无码专区免费青青| 亚洲AⅤ樱花无码| 久久精品亚洲国产av网站| 人妻中文字幕无码系列| 福利一区视频| 国产精品日本中文在线| 久久不见久久见免费视频6 | 美女扒开内裤让男生桶| 情色视频在线观看一区二区三区| 日本熟女人妻一区二区| 激情航班h版在线观看|