日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

j2ee安全介绍--转

發(fā)布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 j2ee安全介绍--转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.簡介

現(xiàn)在越來越多的企業(yè)應(yīng)用構(gòu)建在j2ee平臺上,這得益于j2ee為企業(yè)應(yīng)用的開發(fā)提供了良好的框架和服務(wù)的支持.j2ee為企業(yè)應(yīng)用提供了多方面的服務(wù)(Security、Transaction、Naming等).本文將介紹j2ee提供的安全服務(wù).作者首先介紹j2ee中的安全概念和j2ee的安全體系架構(gòu).然后結(jié)合具體的實例向讀者展示如何在自己的程序中應(yīng)用j2ee提供的安全特性。本文所介紹的內(nèi)容是基于j2ee1.3版本的。

二.j2ee中的安全概念

主體(Principal):主體(Principal)是被在企業(yè)安全服務(wù)驗證了的實體。主體(Principal)用主體名作為它的標(biāo)識,通過與主體相關(guān)的驗證數(shù)據(jù)進(jìn)行驗證。通常情況下主體名就是用戶的登陸名,驗證數(shù)據(jù)就是登陸的密碼。J2EE規(guī)范中并沒有限定J2EE 產(chǎn)品提供商使用怎樣的認(rèn)證方法,因此主體名和驗證數(shù)據(jù)的內(nèi)容和格式依不同的認(rèn)證協(xié)議而不同。

安全策略域(Security Policy Domain):也稱安全域(security domain)或 realm,它是一個邏輯范圍或區(qū)域,在這一范圍或區(qū)域中安全服務(wù)的管理員定義和實施通用的安全策略。它是從安全策略的角度劃分的區(qū)域。比如可以將企業(yè)應(yīng)用系統(tǒng)劃分為企業(yè)員工、供應(yīng)商、合作伙伴等不同的安全域,對這些安全區(qū)域采用不同的安全策略。

安全技術(shù)域(Security Technology Domain):它是從安全技術(shù)的角度劃分的區(qū)域,在一個安全技術(shù)域中使用同樣的安全機(jī)制來執(zhí)行安全策略。一個安全技術(shù)域可以包括多個安全策略域。

安全屬性(Security Attributes):每個主體(Principal)都有一系列與之相關(guān)的安全屬性。安全屬性可用來訪問被保護(hù)的資源,檢查用戶的身份和完成其他一些安全相關(guān)的用途。J2EE產(chǎn)品提供商或具體的驗證服務(wù)的實現(xiàn)來決定怎樣將安全屬性與一個主體聯(lián)系起來。J2EE規(guī)范并沒有限定什么樣的安全屬性將與主體相聯(lián)系。

憑證(Credential):憑證包含或引用為J2EE 系統(tǒng)驗證一個主體的驗證信息(安全屬性)。如果成功的通過了驗證,主體將獲得一個包括安全屬性的憑證。如果被允許的話,一個主體也可能獲取另一個主體的憑證。在這種情況下兩個主體在同一安全域中具有相同的安全屬性。

三.j2ee的安全體系結(jié)構(gòu)

1. 基于容器的安全

在j2ee的環(huán)境中,組件的安全是由他們各自的容器來負(fù)責(zé)的,組件的開發(fā)人員幾乎可以不用或者很少在組件中添加有關(guān)安全的代碼。這種安全邏輯和業(yè)務(wù)邏輯相對獨立的架構(gòu),使得企業(yè)級應(yīng)用系統(tǒng)有更好的靈活性和擴(kuò)展性。J2ee規(guī)范要求j2ee 產(chǎn)品必須為應(yīng)用程序開發(fā)者提供兩種形式的基于容器的安全性-說明性的安全性和可編程的安全性。

a. 說明性的安全性

說明性的安全性通過安全結(jié)構(gòu)描述的方式來代表應(yīng)用程序的安全需求,安全結(jié)構(gòu)一般包括安全角色,訪問控制和驗證要求等。在j2ee平臺中部署描述符充當(dāng)了說明的安全性的主要工具。部署描述符是組件開發(fā)者和應(yīng)用程序部署者或應(yīng)用程序組裝者之間的交流工具。應(yīng)用程序的開發(fā)者用它來表示應(yīng)用中的安全需求,應(yīng)用程序部署者或應(yīng)用程序組裝者將安全角色與部署環(huán)境中的用戶和組映射起來。

在程序運行時容器從部署描述符中提取出相應(yīng)的安全策略,然后容器根據(jù)安全策略執(zhí)行安全驗證。說明的安全性不需要開發(fā)人員編寫任何安全相關(guān)的代碼,一切都是通過配置部署描述符來完成的。

b. 可編程的安全性

可編程的安全性在說明性的安全性的基礎(chǔ)上,使安全敏感的應(yīng)用可以通過調(diào)用被容器提供的API來對安全作出決斷。這在說明性的安全性不足以滿足企業(yè)的安全模型的情況是非常有用的。J2ee在EJB EjbConext interface和servlet HttpServletRequest interface中各提供兩個方法:

isCallerInRole (EJBContext) getCallerPrincipal (EJBContext) isUserInRole (HttpServletRequest) getUserPrincipal (HttpServletRequest)

這些方法允許組件根據(jù)調(diào)用者或遠(yuǎn)程用戶的安全角色來作出商業(yè)判斷。在文章的后面部分將有這些方法的詳細(xì)介紹和例程,以便讀者更好的理解可編程的安全性的用途。

2.J2ee的驗證模型

身份驗證是用戶或組件調(diào)用者向系統(tǒng)證明其身份的過程。用戶通過某種方式向系統(tǒng)提交驗證信息(通常是用戶名和密碼或者是用戶的數(shù)字證書),系統(tǒng)用用戶提供的驗證信息和系統(tǒng)的安全策略來驗證用戶的身份。

圖一 初始驗證過程

圖一 初始驗證過程

圖二 驗證URL

圖三 驗證EJB方法調(diào)用

用戶的驗證

用戶的驗證根據(jù)其客戶端類型不同分為兩種:Web 客戶端的驗證和Application客戶端的驗證

a. Web 客戶端的驗證

Web客戶端通常通過http協(xié)議來請求web服務(wù)器端的資源,這些web資源通常包括html網(wǎng)頁、jsp(java server page)文件、java servlet和其他一些二進(jìn)制或多媒體文件。在企業(yè)環(huán)境中,企業(yè)的某些資源往往要求只允許某些人訪問,有些資源甚至是機(jī)密的或安全敏感的。因此對企業(yè)中各種web資源進(jìn)行訪問控制是十分必要的。為了滿足企業(yè)中的不同安全級別和客戶化的需求,j2ee提供了三種基于web客戶端的驗證方式:

HTTP基本驗證(HTTP Basic Authentication)
HTTP基本驗證 是HTTP協(xié)議所支持的驗證機(jī)制。這種驗證機(jī)制使用用戶的用戶名和密碼作為驗證信息。Web客戶端從用戶獲取用戶名和密碼,然后傳遞他們給web服務(wù)器,web服務(wù)器在指定的區(qū)域(realm)中驗證用戶。但需要注意的是,這種驗證方法是不夠安全的。因為這種驗證方法并不對用戶密碼進(jìn)行加密,而只是對密碼進(jìn)行基本的base64的編碼。而且目標(biāo)web服務(wù)器對用戶來說也是非驗證過的。不能保證用戶訪問到的web服務(wù)器就是用戶希望訪問的。可以采用一些安全措施來克服這個弱點。例如在傳輸層上應(yīng)用SSL或者在網(wǎng)絡(luò)層上使用IPSEC或VPN技術(shù)。

基于表單的驗證(Form-Based Authentication)
基于表單的驗證 使系統(tǒng)開發(fā)者可以自定義用戶的登陸頁面和報錯頁面。這種驗證方法與基本HTTP的驗證方法的唯一區(qū)別就在于它可以根據(jù)用戶的要求制定登陸和出錯頁面。基于表單的驗證方法同樣具有與基本HTTP驗證類似的不安全的弱點。用戶在表單中填寫用戶名和密碼,而后密碼以明文形式在網(wǎng)路中傳遞,如果在網(wǎng)路的某一節(jié)點將此驗證請求截獲,在經(jīng)過反編碼很容易就可以獲取用戶的密碼。因此在使用基本HTTP的驗證方式和基于表單的驗證方法時,一定確定這兩種方式的弱點對你的應(yīng)用是可接受的。

基于客戶端證書的驗證(Client-Certificate Authentication)
基于客戶端證書的驗證方式要比上面兩種方式更安全。它通過HTTPS(HTTP over SSL)來保證驗證的安全性。安全套接層(Secure Sockets Layer)為驗證過程提供了數(shù)據(jù)加密,服務(wù)器端認(rèn)證,信息真實性等方面的安全保證。在此驗證方式中,客戶端必須提供一個公鑰證書,你可以把這個公鑰證書看作是你的數(shù)字護(hù)照。公鑰證書也稱數(shù)字證書,它是被稱作證書授權(quán)機(jī)構(gòu)(CA)-一個被信任的組織頒發(fā)的。這個數(shù)字證書必須符合X509公鑰體系結(jié)構(gòu)(PKI)的標(biāo)準(zhǔn)。如果你指定了這種驗證方式,Web服務(wù)器將使用客戶端提供的數(shù)字證書來驗證用戶的身份。

b. 應(yīng)用程序客戶端的驗證(Application Client User Authentication)
java客戶端程序是執(zhí)行在用戶本地java虛擬機(jī)上的java程序,它擁有main方法,通常由用戶可通過java.exe或javaw.exe直接啟動執(zhí)行。J2ee應(yīng)用程序客戶端與java客戶端程序相似,也擁有main方法,但他們在運行時存在一定的差別。J2ee應(yīng)用程序客戶端和其他j2ee組件一樣運行在自己的容器中。用戶通過容器來執(zhí)行J2ee應(yīng)用程序客戶端。這樣J2ee應(yīng)用程序客戶端容器就有機(jī)會在J2ee應(yīng)用程序客戶端被執(zhí)行之前完成用戶身份的驗證。J2ee提供了一種可自定義的方式來獲取用戶的驗證信息。可以選擇使用容器提供的缺省的方式來獲取j2ee應(yīng)用客戶端程序的用戶的驗證信息,也可以選擇自定義的方式來獲取用戶的驗證信息。當(dāng)選擇自定義方式時,應(yīng)用程序開發(fā)者必須提供一個實現(xiàn)了javax.security.auth.callback.CallbackHandler interfce的類,并且在j2ee部署描述文件application-client.xml中的元素callback-handler中加入這個類的類名。這樣,當(dāng)系統(tǒng)需要驗證用戶身份時,客戶端程序的容器將部署描述文件中的CallbackHandler實現(xiàn)類的類名傳遞給系統(tǒng)的登陸模塊(驗證模塊),登陸模塊再實例化這個實現(xiàn)類。這個類的實例負(fù)責(zé)收集用戶驗證信息,并將收集到的用戶驗證信息傳遞給登陸模塊,登陸模塊用這些驗證信息來驗證用戶。這個實現(xiàn)類可以是具有用戶界面的,或是通過要求用戶輸入來收集用戶驗證信息,也可以是通過命令行來獲取用戶驗證信息,還可能是通過讀取本地或在線的用戶證書庫來獲取用戶的電子證書。選取哪種方式取決于驗證信息的存儲方式。

有些j2ee產(chǎn)品廠商把容器的驗證服務(wù)和本地系統(tǒng)的驗證服務(wù)或其他應(yīng)用系統(tǒng)產(chǎn)品的驗證服務(wù)集成起來,從而在一定的應(yīng)用系統(tǒng)的范圍內(nèi)實現(xiàn)單點登陸的能力。

單點登陸 (Single Sign-On)
單點登從用戶的視角是指用戶在特定的邏輯安全區(qū)域中,只需進(jìn)行一次登陸即可在訪問在此邏輯安全區(qū)域中不同應(yīng)用系統(tǒng)中的被授權(quán)的資源,只有超越了安全區(qū)域邊緣時才要求再次登陸。這種能力對多種IT應(yīng)用系統(tǒng)共存的企業(yè)顯得尤為有價值。隨著企業(yè)信息化建設(shè)程度的不斷提高,企業(yè)中的應(yīng)用系統(tǒng)也越來越多。在傳統(tǒng)的應(yīng)用系統(tǒng)中,各系統(tǒng)各自維護(hù)自己的安全策略,這些安全策略典型的包括組織結(jié)構(gòu)定義,安全角色定義,用戶身份驗證,資源訪問控制等。由于各系統(tǒng)互相獨立,一個用戶在使用每一應(yīng)用系統(tǒng)之前,都必須按照相應(yīng)的系統(tǒng)身份進(jìn)行系統(tǒng)登陸。這對于用戶來說必須記住每一個系統(tǒng)的用戶名和密碼,給用戶帶來了不小的麻煩。針對于這種情況,單點登陸的概念隨之產(chǎn)生,并不斷的應(yīng)用到企業(yè)的應(yīng)用系統(tǒng)的集成當(dāng)中。J2ee1.3也在規(guī)范中建議j2ee產(chǎn)品應(yīng)為應(yīng)用系統(tǒng)提供單點登陸的能力。但j2ee1.3規(guī)范并沒有規(guī)定j2ee產(chǎn)品應(yīng)遵循何種標(biāo)準(zhǔn),因此不同的廠商的產(chǎn)品在單點登陸上的實現(xiàn)和應(yīng)用各不相同。有的j2ee產(chǎn)品實現(xiàn)了在本產(chǎn)品環(huán)境范圍內(nèi)的單點登陸,有的實現(xiàn)了特定系統(tǒng)環(huán)境之間的單點登陸(如IBM WebSphere Application 4.0 AE 實現(xiàn)了WebSphere Application Server與WebSphere Application Server、WebSphere Application Server與Lotus Domino server、WebSphere Application Server與Lotus Domino server之間的單點登陸能力)。在j2ee中單點登陸是通過傳遞憑證(Credential)來實現(xiàn)的.當(dāng)用戶進(jìn)行系統(tǒng)登陸時,客戶端容器(包括WEB客戶端和應(yīng)用程序客戶端)根據(jù)用戶的憑證(Credential)為用戶建立一個安全上下文(security Context),安全上下文包含用于驗證用戶的安全信息,系統(tǒng)用這個安全上下文和安全策略來判斷用戶是否有訪問系統(tǒng)資源的權(quán)限。遺憾的時j2ee規(guī)范并沒有規(guī)定安全上下文的格式,因此不能在不同廠商的j2ee產(chǎn)品之間傳遞安全上下文。到目前為止還很少有在不同的j2ee產(chǎn)品間互相共享安全上下文,因此在不同j2ee產(chǎn)品間實現(xiàn)單點登陸只能通過第三方產(chǎn)品(如LDAP server等)集成的方式。

惰性驗證(Lazy Authentication)
身份驗是有代價的。例如,一次驗證過程也許包括多次通過網(wǎng)絡(luò)信息交換。因此惰性驗證就非常有用了。惰性驗證使當(dāng)用戶訪問受保護(hù)的資源時才執(zhí)行驗證過程,而不是在用戶第一次發(fā)起請求時就執(zhí)行驗證過程。

3. J2ee的授權(quán)模型

代碼授權(quán)(Code Authorization)
j2ee產(chǎn)品通過java 2 安全模型來限制特定J2SE的類和方法的執(zhí)行,以保護(hù)和確保操作系統(tǒng)的安全。詳細(xì)描述請參閱《J2SE規(guī)范文檔》。

調(diào)用者授權(quán)(Caller Authorization)
安全角色:安全角色是具有相同安全屬性的邏輯組。它由應(yīng)用程序的裝配者(Application Assembler)或應(yīng)用程序的部署者(Application Deployer)分配的。

安全角色引用:安全角色引用是應(yīng)用程序提供者(Application Provider)用來引用安全角色的標(biāo)識。應(yīng)用程序提供者(Application Provider)可以用安全角色引用來為安全角色分配資源訪問的權(quán)限。也在安全相關(guān)的程序代碼中引用安全角色。

用戶和組:用戶和組是在實際系統(tǒng)環(huán)境下的用戶和用戶的集合。它們對應(yīng)者現(xiàn)實當(dāng)中的人和群體。

訪問控制:訪問控制可以確保安全角色只能訪問已授予它安全權(quán)限的授權(quán)對象。授權(quán)對象包括EJB的遠(yuǎn)程方法、web資源(html網(wǎng)頁,jsp/servlet和多媒體或二進(jìn)制文件)等。在j2ee中訪問控制在應(yīng)用程序描述文件中與安全角色關(guān)聯(lián)起來。

映射:通過映射應(yīng)用程序的系統(tǒng)管理員將實際系統(tǒng)環(huán)境中的用戶和角色與安全角色聯(lián)系起來,從而是實際的用戶擁有對企業(yè)資源訪問的適當(dāng)授權(quán)。

被傳播的調(diào)用者身份標(biāo)識(Propagated Caller Identities)
在j2ee 1.3中可以選擇用傳播調(diào)用者標(biāo)識作為web組件和ejb組件調(diào)用者的標(biāo)識來進(jìn)行驗證。在這種方式下,整個ejb組件的調(diào)用鏈中interface EJBContext的方法getCallerPrincipal返回相同的主體名(principal name)。如果調(diào)用鏈中的第一個ejb是被jsp/servlet調(diào)用的,interface EJBContext的方法getCallerPrincipal返回的主體名(principal name)應(yīng)與interface HttpServletRequest的方法getUserPrincipal的返回值相同。要注意的是在調(diào)用鏈中傳遞的是用戶的標(biāo)識,而不是憑證(credentials),這一點非常重要,因為在調(diào)用鏈的每個節(jié)點上用戶可能使用不同的安全屬性。

Run As Identities
J2ee 1.3中提供了允許組件開發(fā)者和部署這來指定組件以什么身份運行的方法。符合j2ee1.3規(guī)范的產(chǎn)品會提供將組件設(shè)置成Run As Identities方式的方法。如果Run As Identities方式被選中,在運行中被設(shè)置為Run As Identities的組件的調(diào)用者不再是調(diào)用鏈中第一個節(jié)點的調(diào)用者了,而是在部署時被指定的調(diào)用者。而調(diào)用鏈中隨后節(jié)點的調(diào)用者也變?yōu)榕c被設(shè)置為Run As Identities的組件的調(diào)用者相同。

圖四 用戶標(biāo)識傳遞

這一部分介紹了j2ee的安全概念,意在使讀者能夠?qū)2ee在安全方面有一定的了解,后面還會有應(yīng)用這些概念的具體例子。

小結(jié)

j2ee為我們提供了對于驗證和授權(quán)的安全服務(wù),在開發(fā)基于j2ee的應(yīng)用時應(yīng)該盡可能的使用j2ee為我們提供的這些服務(wù)。因為只有遵循j2ee標(biāo)準(zhǔn),才能使你的應(yīng)用具有良好的移植性、擴(kuò)展性和可維護(hù)性。只有在所選j2ee產(chǎn)品不能滿足特定的安全需求時,才應(yīng)該考慮使用第三方安全產(chǎn)品或自己開發(fā)安全服務(wù)。

來源:http://www.ibm.com/developerworks/cn/java/l-j2eeSecurity/

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/3818810.html

總結(jié)

以上是生活随笔為你收集整理的j2ee安全介绍--转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线看片亚洲 | 国产suv精品一区二区 | 国产欧美精品一区二区在线播放 | 99爱爱视频 | 国产麻豆午夜三级精品 | 外国黄色网 | 一区二区不卡视频在线观看 | 成人福利网站在线观看 | 三上悠亚 电影 | 亚洲黄色片免费看 | 成年免费在线观看 | 国产一区亚洲 | 天天色小说 | 久久久久久亚洲av毛片大全 | 男生和女生一起差差差视频 | 亚洲精品成a人在线观看 | 欧美成人精品一区二区三区在线看 | 亚洲好骚综合 | 久久久久久国产精品三级玉女聊斋 | av集中营 | 蜜桃av噜噜一区二区三区麻豆 | 亚洲黄色在线免费观看 | 黄色片免费看 | 91久久一区二区三区 | 国产网站大全 | 亚洲乱码电影 | 四虎影院在线 | 男人午夜网站 | 波多野结衣伦理 | 一区二区在线免费观看 | 天天干狠狠操 | 台湾chinesehdxxxx少妇 | 午夜精品视频在线 | 香蕉久久国产av一区二区 | av在线免费观看网站 | 国产又猛又黄 | 成人精品一区二区三区在线 | 婷婷亚洲天堂 | 精一区二区 | 日韩电影福利 | 国产亚洲精品成人av久久ww | 欧美精品一区二区三区久久久 | 日韩aⅴ在线观看 | 色屋视频 | 亚洲av日韩av高潮潮喷无码 | 自拍视频国产 | 亚洲人成无码网站久久99热国产 | 日韩在线观看视频一区 | 中文精品久久 | 欧美午夜精品理论片 | 亚洲欧美精品aaaaaa片 | 国产九九在线 | 国产在线小视频 | 亚洲高清在线免费观看 | 夜夜操天天射 | 亚洲精品中文无码AV在线播放 | 合欢视频污 | 天天舔天天干 | 午夜一级免费 | 91天天射 | 色视频免费在线观看 | 久久久91| 国产精品自拍在线观看 | 国产69精品久久久 | 中文有码在线播放 | 国产精品久久久久三级 | 四季av日韩精品一区 | 秋霞在线观看秋 | 奇米狠狠去啦 | 亚洲色图偷 | 久久精品亚洲精品国产欧美 | avtt中文字幕 | 日本午夜小视频 | 捆绑裸体绳奴bdsm亚洲 | xx久久 | 杨幂毛片午夜性生毛片 | 女人看黄色网 | 午夜精品视频一区二区三区在线看 | 北条麻妃一二三区 | 操的网站| 日本人毛片 | 亚州av综合色区无码一区 | 国产夫妻在线 | 第一福利在线 | 亚洲美女屁股眼交3 | 亚洲乱码国产乱码精品精 | 久久精品播放 | 爱乃なみ加勒比在线播放 | 日本少妇中文字幕 | 中文字幕欧美专区 | av片在线免费看 | av国产一区| 欧美日韩xxxx | 精品久久网站 | 五月天社区 | 久久久精品一区二区三区 | 午夜小视频在线观看 | 黄色网址大全免费 | 亚洲成人av免费在线观看 |