http://www.ebuilds.net/news/kanwu/4/4-03.htm
前言
J2EE(Java 2 Platform Enterprise Edition)是美國(guó)Sun公司推出的多層企業(yè)應(yīng)用開(kāi)發(fā)模型。J2EE簡(jiǎn)化了基于工業(yè)標(biāo)準(zhǔn)的、組件化的企業(yè)應(yīng)用開(kāi)發(fā),提供了一套完整的企業(yè)應(yīng)用的開(kāi)發(fā)框架和服務(wù)(Security、Transaction、Naming等)的支持。因此,越來(lái)越多的企業(yè)應(yīng)用構(gòu)建在J2EE平臺(tái)上。在企業(yè)應(yīng)用中,首要關(guān)心的是應(yīng)用的安全性,本文首先介紹J2EE中的安全概念和J2EE的安全體系架構(gòu)。最后展示在程序的開(kāi)發(fā)中怎樣應(yīng)用J2EE提供的安全特性。
J2EE中的安全概念
通俗的講,一個(gè)安全的系統(tǒng)首先是保證通過(guò)了系統(tǒng)驗(yàn)證的用戶才能進(jìn)入系統(tǒng),不通過(guò)系統(tǒng)驗(yàn)證的用戶是不能進(jìn)入系統(tǒng)的。通過(guò)系統(tǒng)驗(yàn)證的用戶只能在授權(quán)的范圍內(nèi)操作,而不能接觸到任何未經(jīng)授權(quán)的任何內(nèi)容(包括功能和數(shù)據(jù))。為此目的,在系統(tǒng)中需要先定義以下幾種基本的安全概念:
主體(Principal):主體(Principal)是被在企業(yè)安全服務(wù)驗(yàn)證了的實(shí)體。主體(Principal)用主體名作為它的標(biāo)識(shí),通過(guò)與主體相關(guān)的驗(yàn)證數(shù)據(jù)進(jìn)行驗(yàn)證。通常情況下主體名就是用戶的登陸名,驗(yàn)證數(shù)據(jù)就是登陸的密碼。 J2EE規(guī)范中并沒(méi)有限定J2EE 產(chǎn)品提供商使用怎樣的認(rèn)證方法,因此主體名和驗(yàn)證數(shù)據(jù)的內(nèi)容和格式依不同的認(rèn)證協(xié)議而不同。
安全策略域(Security Policy Domain):也稱安全域(security domain)或 realm,它是一個(gè)邏輯范圍或區(qū)域,在這一范圍或區(qū)域中安全服務(wù)的管理員定義和實(shí)施通用的安全策略。它是從安全策略的角度劃分的區(qū)域。比如可以將企業(yè)應(yīng)用系統(tǒng)劃分為企業(yè)員工、供應(yīng)商、合作伙伴等不同的安全域,對(duì)這些安全區(qū)域采用不同的安全策略。
安全技術(shù)域(Security Technology Domain):它是從安全技術(shù)的角度劃分的區(qū)域,在一個(gè)安全技術(shù)域中使用同樣的安全機(jī)制來(lái)執(zhí)行安全策略。一個(gè)安全技術(shù)域可以包括多個(gè)安全策略域。
安全屬性(Security Attributes):每個(gè)主體(Principal)都有一系列與之相關(guān)的安全屬性。安全屬性可用來(lái)訪問(wèn)被保護(hù)的資源,檢查用戶的身份和完成其他一些安全相關(guān)的用途。J2EE產(chǎn)品提供商或具體的驗(yàn)證服務(wù)的實(shí)現(xiàn)來(lái)決定怎樣將安全屬性與一個(gè)主體聯(lián)系起來(lái)。J2EE規(guī)范并沒(méi)有限定什么樣的安全屬性將與主體相聯(lián)系。
信任域(Credential):信任域包含或引用為J2EE系統(tǒng)驗(yàn)證一個(gè)主體的驗(yàn)證信息(安全屬性)。如果成功的通過(guò)了驗(yàn)證,主體將獲得一個(gè)包括安全屬性的信任域。如果被允許的話,一個(gè)主體也可能獲取另一個(gè)主體的信任域。在這種情況下兩個(gè)主體在同一安全域中具有相同的安全屬性。
J2EE安全體系
1、基于容器的安全
在J2EE的環(huán)境中,組件的安全是由他們各自的容器來(lái)負(fù)責(zé)的,組件的開(kāi)發(fā)人員幾乎可以不用或者很少在組件中添加有關(guān)安全的代碼。這種安全邏輯和業(yè)務(wù)邏輯相對(duì)獨(dú)立的架構(gòu),使得企業(yè)級(jí)應(yīng)用系統(tǒng)有更好的靈活性和擴(kuò)展性。J2EE規(guī)范要求J2EE 產(chǎn)品必須為應(yīng)用程序開(kāi)發(fā)者提供兩種形式的基于容器的安全性:說(shuō)明性的安全性和可編程的安全性。
I、說(shuō)明性的安全性
說(shuō)明性的安全性通過(guò)安全結(jié)構(gòu)描述的方式來(lái)代表應(yīng)用程序的安全需求,安全結(jié)構(gòu)一般包括安全角色,訪問(wèn)控制和驗(yàn)證要求等。在J2EE平臺(tái)中部署描述符充當(dāng)了說(shuō)明的安全性的主要工具。部署描述符是組件開(kāi)發(fā)者和應(yīng)用程序部署者或應(yīng)用程序組裝者之間的交流工具。應(yīng)用程序的開(kāi)發(fā)者用它來(lái)表示應(yīng)用中的安全需求,應(yīng)用程序部署者或應(yīng)用程序組裝者將安全角色與部署環(huán)境中的用戶和組映射起來(lái)。
在程序運(yùn)行時(shí)容器從部署描述符中提取出相應(yīng)的安全策略,然后容器根據(jù)安全策略執(zhí)行安全驗(yàn)證。說(shuō)明的安全性不需要開(kāi)發(fā)人員編寫(xiě)任何安全相關(guān)的代碼,一切都是通過(guò)配置部署描述符來(lái)完成的。
II、可編程的安全性
可編程的安全性在說(shuō)明性的安全性的基礎(chǔ)上,使安全敏感的應(yīng)用可以通過(guò)調(diào)用容器提供的API來(lái)對(duì)安全作出決斷。這在說(shuō)明性的安全性不足以滿足企業(yè)的安全模型的情況是非常有用的。J2EE在EJB EjbConext interface和servlet HttpServletRequest interface中各提供兩個(gè)方法:
isCallerInRole (EJBContext)
getCallerPrincipal (EJBContext)
isUserInRole (HttpServletRequest)
GetUserPrincipal (HttpServletRequest)
這些方法允許組件根據(jù)調(diào)用者或遠(yuǎn)程用戶的安全角色來(lái)作出商業(yè)判斷。
2、J2EE的驗(yàn)證模型
身份驗(yàn)證是用戶或組件調(diào)用者向系統(tǒng)證明其身份的過(guò)程。用戶通過(guò)某種方式向系統(tǒng)提交驗(yàn)證信息(通常是用戶名和密碼或者是用戶的數(shù)字證書(shū)),系統(tǒng)以用戶提供的驗(yàn)證信息和系統(tǒng)的安全策略來(lái)驗(yàn)證用戶的身份。
I、Web 客戶端的驗(yàn)證
Web客戶端通常通過(guò)http協(xié)議來(lái)請(qǐng)求web服務(wù)器端的資源,這些web資源通常包括html網(wǎng)頁(yè)、jsp(java server page)文件、java servlet和其他一些二進(jìn)制或多媒體文件。在企業(yè)環(huán)境中,企業(yè)的某些資源往往要求只允許某些人訪問(wèn),有些資源甚至是機(jī)密的或安全敏感的。因此對(duì)企業(yè)中各種web資源進(jìn)行訪問(wèn)控制是十分必要的。為了滿足企業(yè)中的不同安全級(jí)別和客戶化的需求,J2EE提供了三種基于web客戶端的驗(yàn)證方式:
●HTTP基本驗(yàn)證(HTTP Basic Authentication)
●基于表單的驗(yàn)證(Form-Based Authentication)
●基于客戶端證書(shū)的驗(yàn)證(Client-Certificate Authentication)
II、應(yīng)用程序客戶端的驗(yàn)證
Java客戶端程序是執(zhí)行在用戶本地java虛擬機(jī)上的java程序,它擁有main方法,通常用戶可通過(guò)java.exe或javaw.exe直接啟動(dòng)執(zhí)行。J2EE應(yīng)用程序客戶端與java客戶端程序相似,也擁有main方法,但他們?cè)谶\(yùn)行時(shí)存在一定的差別。J2EE應(yīng)用程序客戶端和其他J2EE組件一樣運(yùn)行在自己的容器中。用戶通過(guò)容器來(lái)執(zhí)行J2EE應(yīng)用程序客戶端。這樣J2EE應(yīng)用程序客戶端容器就有機(jī)會(huì)在J2EE應(yīng)用程序客戶端被執(zhí)行之前完成用戶身份的驗(yàn)證。J2EE提供了一種可自定義的方式來(lái)獲取用戶的驗(yàn)證信息。可以選擇使用容器提供的缺省的方式來(lái)獲取J2EE應(yīng)用客戶端程序的用戶的驗(yàn)證信息,也可以選擇自定義的方式來(lái)獲取用戶的驗(yàn)證信息。
3、J2EE的授權(quán)模型
I、代碼授權(quán)(Code Authorization)
J2EE產(chǎn)品通過(guò)java 2 安全模型來(lái)限制特定J2SE的類和方法的執(zhí)行,以保護(hù)和確保操作系統(tǒng)的安全。
II、調(diào)用者授權(quán)(Caller Authorization)
安全角色:安全角色是具有相同安全屬性的邏輯組。它由應(yīng)用程序的裝配者(Application Assembler)或應(yīng)用程序的部署者(Application Deployer)分配的。
III、安全角色引用
安全角色引用是應(yīng)用程序提供者(Application Provider)用來(lái)引用安全角色的標(biāo)識(shí)。應(yīng)用程序提供者(Application Provider)可以用安全角色引用來(lái)為安全角色分配資源訪問(wèn)的權(quán)限,也可以在安全相關(guān)的程序代碼中引用安全角色。
IV、用戶和組
用戶和組是在實(shí)際系統(tǒng)環(huán)境下的用戶和用戶的集合。它們對(duì)應(yīng)著現(xiàn)實(shí)當(dāng)中的人和群體。
V、訪問(wèn)控制
訪問(wèn)控制可以確保安全角色只能訪問(wèn)已授予它安全權(quán)限的授權(quán)對(duì)象。授權(quán)對(duì)象包括EJB的遠(yuǎn)程方法、web資源(html網(wǎng)頁(yè),jsp/servlet和多媒體或二進(jìn)制文件)等。在J2EE中訪問(wèn)控制在應(yīng)用程序描述文件中與安全角色關(guān)聯(lián)起來(lái)。
VI、映射
通過(guò)映射應(yīng)用程序的系統(tǒng)管理員將實(shí)際系統(tǒng)環(huán)境中的用戶和角色與安全角色聯(lián)系起來(lái),從而是實(shí)際的用戶擁有對(duì)企業(yè)資源訪問(wèn)的適當(dāng)授權(quán)。
VII、被傳播的調(diào)用者身份標(biāo)識(shí)
在J2EE 1.3中可以選擇用傳播調(diào)用者標(biāo)識(shí)作為web組件和ejb組件調(diào)用者的標(biāo)識(shí)來(lái)進(jìn)行驗(yàn)證。在這種方式下,整個(gè)ejb組件的調(diào)用鏈中interface EJBContext的方法getCallerPrincipal返回相同的主體名(principal name)。如果調(diào)用鏈中的第一個(gè)ejb是被jsp/servlet調(diào)用的,interface EJBContext的方法getCallerPrincipal返回的主體名(principal name)應(yīng)與interface HttpServletRequest的方法getUserPrincipal的返回值相同。要注意的是在調(diào)用鏈中傳遞的是用戶的標(biāo)識(shí),而不是憑證(credentials),這一點(diǎn)非常重要,因?yàn)樵谡{(diào)用鏈的每個(gè)節(jié)點(diǎn)上用戶可能使用不同的安全屬性。
VIII、Run As Identities
J2EE 1.3中提供了允許組件開(kāi)發(fā)者和部署者來(lái)指定組件以什么身份運(yùn)行的方法。符合J2EE1.3規(guī)范的產(chǎn)品會(huì)提供將組件設(shè)置成Run As Identities方式的方法。如果Run As Identities方式被選中,在運(yùn)行中被設(shè)置為Run As Identities的組件的調(diào)用者不再是調(diào)用鏈中第一個(gè)節(jié)點(diǎn)的調(diào)用者了,而是在部署時(shí)被指定的調(diào)用者。而調(diào)用鏈中隨后節(jié)點(diǎn)的調(diào)用者也變?yōu)榕c被設(shè)置為Run As Identities的組件的調(diào)用者相同。
前言
J2EE(Java 2 Platform Enterprise Edition)是美國(guó)Sun公司推出的多層企業(yè)應(yīng)用開(kāi)發(fā)模型。J2EE簡(jiǎn)化了基于工業(yè)標(biāo)準(zhǔn)的、組件化的企業(yè)應(yīng)用開(kāi)發(fā),提供了一套完整的企業(yè)應(yīng)用的開(kāi)發(fā)框架和服務(wù)(Security、Transaction、Naming等)的支持。因此,越來(lái)越多的企業(yè)應(yīng)用構(gòu)建在J2EE平臺(tái)上。在企業(yè)應(yīng)用中,首要關(guān)心的是應(yīng)用的安全性,本文首先介紹J2EE中的安全概念和J2EE的安全體系架構(gòu)。最后展示在程序的開(kāi)發(fā)中怎樣應(yīng)用J2EE提供的安全特性。
J2EE中的安全概念
通俗的講,一個(gè)安全的系統(tǒng)首先是保證通過(guò)了系統(tǒng)驗(yàn)證的用戶才能進(jìn)入系統(tǒng),不通過(guò)系統(tǒng)驗(yàn)證的用戶是不能進(jìn)入系統(tǒng)的。通過(guò)系統(tǒng)驗(yàn)證的用戶只能在授權(quán)的范圍內(nèi)操作,而不能接觸到任何未經(jīng)授權(quán)的任何內(nèi)容(包括功能和數(shù)據(jù))。為此目的,在系統(tǒng)中需要先定義以下幾種基本的安全概念:
主體(Principal):主體(Principal)是被在企業(yè)安全服務(wù)驗(yàn)證了的實(shí)體。主體(Principal)用主體名作為它的標(biāo)識(shí),通過(guò)與主體相關(guān)的驗(yàn)證數(shù)據(jù)進(jìn)行驗(yàn)證。通常情況下主體名就是用戶的登陸名,驗(yàn)證數(shù)據(jù)就是登陸的密碼。 J2EE規(guī)范中并沒(méi)有限定J2EE 產(chǎn)品提供商使用怎樣的認(rèn)證方法,因此主體名和驗(yàn)證數(shù)據(jù)的內(nèi)容和格式依不同的認(rèn)證協(xié)議而不同。
安全策略域(Security Policy Domain):也稱安全域(security domain)或 realm,它是一個(gè)邏輯范圍或區(qū)域,在這一范圍或區(qū)域中安全服務(wù)的管理員定義和實(shí)施通用的安全策略。它是從安全策略的角度劃分的區(qū)域。比如可以將企業(yè)應(yīng)用系統(tǒng)劃分為企業(yè)員工、供應(yīng)商、合作伙伴等不同的安全域,對(duì)這些安全區(qū)域采用不同的安全策略。
安全技術(shù)域(Security Technology Domain):它是從安全技術(shù)的角度劃分的區(qū)域,在一個(gè)安全技術(shù)域中使用同樣的安全機(jī)制來(lái)執(zhí)行安全策略。一個(gè)安全技術(shù)域可以包括多個(gè)安全策略域。
安全屬性(Security Attributes):每個(gè)主體(Principal)都有一系列與之相關(guān)的安全屬性。安全屬性可用來(lái)訪問(wèn)被保護(hù)的資源,檢查用戶的身份和完成其他一些安全相關(guān)的用途。J2EE產(chǎn)品提供商或具體的驗(yàn)證服務(wù)的實(shí)現(xiàn)來(lái)決定怎樣將安全屬性與一個(gè)主體聯(lián)系起來(lái)。J2EE規(guī)范并沒(méi)有限定什么樣的安全屬性將與主體相聯(lián)系。
信任域(Credential):信任域包含或引用為J2EE系統(tǒng)驗(yàn)證一個(gè)主體的驗(yàn)證信息(安全屬性)。如果成功的通過(guò)了驗(yàn)證,主體將獲得一個(gè)包括安全屬性的信任域。如果被允許的話,一個(gè)主體也可能獲取另一個(gè)主體的信任域。在這種情況下兩個(gè)主體在同一安全域中具有相同的安全屬性。
J2EE安全體系
1、基于容器的安全
在J2EE的環(huán)境中,組件的安全是由他們各自的容器來(lái)負(fù)責(zé)的,組件的開(kāi)發(fā)人員幾乎可以不用或者很少在組件中添加有關(guān)安全的代碼。這種安全邏輯和業(yè)務(wù)邏輯相對(duì)獨(dú)立的架構(gòu),使得企業(yè)級(jí)應(yīng)用系統(tǒng)有更好的靈活性和擴(kuò)展性。J2EE規(guī)范要求J2EE 產(chǎn)品必須為應(yīng)用程序開(kāi)發(fā)者提供兩種形式的基于容器的安全性:說(shuō)明性的安全性和可編程的安全性。
I、說(shuō)明性的安全性
說(shuō)明性的安全性通過(guò)安全結(jié)構(gòu)描述的方式來(lái)代表應(yīng)用程序的安全需求,安全結(jié)構(gòu)一般包括安全角色,訪問(wèn)控制和驗(yàn)證要求等。在J2EE平臺(tái)中部署描述符充當(dāng)了說(shuō)明的安全性的主要工具。部署描述符是組件開(kāi)發(fā)者和應(yīng)用程序部署者或應(yīng)用程序組裝者之間的交流工具。應(yīng)用程序的開(kāi)發(fā)者用它來(lái)表示應(yīng)用中的安全需求,應(yīng)用程序部署者或應(yīng)用程序組裝者將安全角色與部署環(huán)境中的用戶和組映射起來(lái)。
在程序運(yùn)行時(shí)容器從部署描述符中提取出相應(yīng)的安全策略,然后容器根據(jù)安全策略執(zhí)行安全驗(yàn)證。說(shuō)明的安全性不需要開(kāi)發(fā)人員編寫(xiě)任何安全相關(guān)的代碼,一切都是通過(guò)配置部署描述符來(lái)完成的。
II、可編程的安全性
可編程的安全性在說(shuō)明性的安全性的基礎(chǔ)上,使安全敏感的應(yīng)用可以通過(guò)調(diào)用容器提供的API來(lái)對(duì)安全作出決斷。這在說(shuō)明性的安全性不足以滿足企業(yè)的安全模型的情況是非常有用的。J2EE在EJB EjbConext interface和servlet HttpServletRequest interface中各提供兩個(gè)方法:
isCallerInRole (EJBContext)
getCallerPrincipal (EJBContext)
isUserInRole (HttpServletRequest)
GetUserPrincipal (HttpServletRequest)
這些方法允許組件根據(jù)調(diào)用者或遠(yuǎn)程用戶的安全角色來(lái)作出商業(yè)判斷。
2、J2EE的驗(yàn)證模型
身份驗(yàn)證是用戶或組件調(diào)用者向系統(tǒng)證明其身份的過(guò)程。用戶通過(guò)某種方式向系統(tǒng)提交驗(yàn)證信息(通常是用戶名和密碼或者是用戶的數(shù)字證書(shū)),系統(tǒng)以用戶提供的驗(yàn)證信息和系統(tǒng)的安全策略來(lái)驗(yàn)證用戶的身份。
![]() |
圖一 初始驗(yàn)證過(guò)程 |
![]() |
圖二 驗(yàn)證URL |
![]() |
圖三 驗(yàn)證EJB方法調(diào)用 |
Web客戶端通常通過(guò)http協(xié)議來(lái)請(qǐng)求web服務(wù)器端的資源,這些web資源通常包括html網(wǎng)頁(yè)、jsp(java server page)文件、java servlet和其他一些二進(jìn)制或多媒體文件。在企業(yè)環(huán)境中,企業(yè)的某些資源往往要求只允許某些人訪問(wèn),有些資源甚至是機(jī)密的或安全敏感的。因此對(duì)企業(yè)中各種web資源進(jìn)行訪問(wèn)控制是十分必要的。為了滿足企業(yè)中的不同安全級(jí)別和客戶化的需求,J2EE提供了三種基于web客戶端的驗(yàn)證方式:
●HTTP基本驗(yàn)證(HTTP Basic Authentication)
●基于表單的驗(yàn)證(Form-Based Authentication)
●基于客戶端證書(shū)的驗(yàn)證(Client-Certificate Authentication)
II、應(yīng)用程序客戶端的驗(yàn)證
Java客戶端程序是執(zhí)行在用戶本地java虛擬機(jī)上的java程序,它擁有main方法,通常用戶可通過(guò)java.exe或javaw.exe直接啟動(dòng)執(zhí)行。J2EE應(yīng)用程序客戶端與java客戶端程序相似,也擁有main方法,但他們?cè)谶\(yùn)行時(shí)存在一定的差別。J2EE應(yīng)用程序客戶端和其他J2EE組件一樣運(yùn)行在自己的容器中。用戶通過(guò)容器來(lái)執(zhí)行J2EE應(yīng)用程序客戶端。這樣J2EE應(yīng)用程序客戶端容器就有機(jī)會(huì)在J2EE應(yīng)用程序客戶端被執(zhí)行之前完成用戶身份的驗(yàn)證。J2EE提供了一種可自定義的方式來(lái)獲取用戶的驗(yàn)證信息。可以選擇使用容器提供的缺省的方式來(lái)獲取J2EE應(yīng)用客戶端程序的用戶的驗(yàn)證信息,也可以選擇自定義的方式來(lái)獲取用戶的驗(yàn)證信息。
3、J2EE的授權(quán)模型
I、代碼授權(quán)(Code Authorization)
J2EE產(chǎn)品通過(guò)java 2 安全模型來(lái)限制特定J2SE的類和方法的執(zhí)行,以保護(hù)和確保操作系統(tǒng)的安全。
II、調(diào)用者授權(quán)(Caller Authorization)
安全角色:安全角色是具有相同安全屬性的邏輯組。它由應(yīng)用程序的裝配者(Application Assembler)或應(yīng)用程序的部署者(Application Deployer)分配的。
III、安全角色引用
安全角色引用是應(yīng)用程序提供者(Application Provider)用來(lái)引用安全角色的標(biāo)識(shí)。應(yīng)用程序提供者(Application Provider)可以用安全角色引用來(lái)為安全角色分配資源訪問(wèn)的權(quán)限,也可以在安全相關(guān)的程序代碼中引用安全角色。
IV、用戶和組
用戶和組是在實(shí)際系統(tǒng)環(huán)境下的用戶和用戶的集合。它們對(duì)應(yīng)著現(xiàn)實(shí)當(dāng)中的人和群體。
V、訪問(wèn)控制
訪問(wèn)控制可以確保安全角色只能訪問(wèn)已授予它安全權(quán)限的授權(quán)對(duì)象。授權(quán)對(duì)象包括EJB的遠(yuǎn)程方法、web資源(html網(wǎng)頁(yè),jsp/servlet和多媒體或二進(jìn)制文件)等。在J2EE中訪問(wèn)控制在應(yīng)用程序描述文件中與安全角色關(guān)聯(lián)起來(lái)。
VI、映射
通過(guò)映射應(yīng)用程序的系統(tǒng)管理員將實(shí)際系統(tǒng)環(huán)境中的用戶和角色與安全角色聯(lián)系起來(lái),從而是實(shí)際的用戶擁有對(duì)企業(yè)資源訪問(wèn)的適當(dāng)授權(quán)。
VII、被傳播的調(diào)用者身份標(biāo)識(shí)
在J2EE 1.3中可以選擇用傳播調(diào)用者標(biāo)識(shí)作為web組件和ejb組件調(diào)用者的標(biāo)識(shí)來(lái)進(jìn)行驗(yàn)證。在這種方式下,整個(gè)ejb組件的調(diào)用鏈中interface EJBContext的方法getCallerPrincipal返回相同的主體名(principal name)。如果調(diào)用鏈中的第一個(gè)ejb是被jsp/servlet調(diào)用的,interface EJBContext的方法getCallerPrincipal返回的主體名(principal name)應(yīng)與interface HttpServletRequest的方法getUserPrincipal的返回值相同。要注意的是在調(diào)用鏈中傳遞的是用戶的標(biāo)識(shí),而不是憑證(credentials),這一點(diǎn)非常重要,因?yàn)樵谡{(diào)用鏈的每個(gè)節(jié)點(diǎn)上用戶可能使用不同的安全屬性。
VIII、Run As Identities
J2EE 1.3中提供了允許組件開(kāi)發(fā)者和部署者來(lái)指定組件以什么身份運(yùn)行的方法。符合J2EE1.3規(guī)范的產(chǎn)品會(huì)提供將組件設(shè)置成Run As Identities方式的方法。如果Run As Identities方式被選中,在運(yùn)行中被設(shè)置為Run As Identities的組件的調(diào)用者不再是調(diào)用鏈中第一個(gè)節(jié)點(diǎn)的調(diào)用者了,而是在部署時(shí)被指定的調(diào)用者。而調(diào)用鏈中隨后節(jié)點(diǎn)的調(diào)用者也變?yōu)榕c被設(shè)置為Run As Identities的組件的調(diào)用者相同。