精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >我翻譯的J2EE平臺(tái)安全(原著是《J2EE tutorial》) 創(chuàng)建者:webmaster 更新時(shí)間:2005-05-16 22:07

    J2EE安全



    J2EE應(yīng)用編程模式將開發(fā)者從安全應(yīng)用專業(yè)領(lǐng)域的實(shí)現(xiàn)細(xì)節(jié)分離出來。J2EE平臺(tái)以一種方式提供了這種分離,這種方式能夠提高應(yīng)用的可移植性,并且允許他們被部署到不同的安全環(huán)境中。

    這一章中的一些資料假定你已經(jīng)有了一些基本的安全概念。為了更好掌握這些概念,我們強(qiáng)烈推薦你在開始本章前,去看看《The Java Tutorial》這本書的安全部分。

    (見http://java.sun.com/docs/books/tutorial/security1.2/index.html)





    概要



      J2EE平臺(tái)定義了一些在開發(fā)人員、裝配人員和配置人員之間的公開的規(guī)約。在安全應(yīng)用的上下文中,應(yīng)用提供者被要求以一種能夠讓安全需求在應(yīng)用配置中得到滿足的方式來聲明這些應(yīng)用的安全需求。在應(yīng)用中使用的被聲明的安全機(jī)制是寫在一個(gè)叫部署描述符(DD)的文本中。然后應(yīng)用開發(fā)者使用容器方面的工具將部署描述符中的應(yīng)用需求映射到J2EE服務(wù)器或者Web容器提供的安全機(jī)制當(dāng)中去。

      需要自己編寫的安全(programmatic security)是與安全意識(shí)應(yīng)用產(chǎn)生的安全決策有關(guān)的部分。當(dāng)聲明的安全不夠表達(dá)應(yīng)用的安全模式時(shí),自己編寫的安全代碼(programmatic security)是很有用的。比如,一個(gè)應(yīng)用的授權(quán)決策可能是基于一天內(nèi)的時(shí)間的,也可能基于一次調(diào)用的參數(shù),或者基于一個(gè)enterprise bean或web容器的內(nèi)部策略。另一個(gè)應(yīng)用很可能基于存儲(chǔ)于數(shù)據(jù)庫中的用戶信息來嚴(yán)格限制訪問。

      J2EE和Java Web Services的應(yīng)用是由可以被部署于不同容器上的組件構(gòu)成的。這些組件是用來構(gòu)建一個(gè)多層企業(yè)應(yīng)用的。J2EE安全體系架構(gòu)的目標(biāo)就是為了通過做到每一層的安全從而使端到端安全。



      各個(gè)層可以既有受保護(hù)的資源也有不受保護(hù)的資源。通常,你需要保護(hù)資源以確保只有經(jīng)過授權(quán)(authorized)的用戶才能訪問它們。授權(quán)提供了對被保護(hù)資源的受控的訪問。授權(quán)是基于鑒定(identification)和認(rèn)證(authentication)的。鑒定是一個(gè)系統(tǒng)能夠識(shí)別出實(shí)體的過程。認(rèn)證是驗(yàn)證一個(gè)用戶,設(shè)備或者計(jì)算機(jī)系統(tǒng)里的其他實(shí)體的鑒定的過程,通常作為在系統(tǒng)中允許訪問資源的先決條件。

      授權(quán)和認(rèn)證對于不受保護(hù)的資源是不必要的。非授權(quán)的訪問資源是指那些未經(jīng)認(rèn)證的或者匿名的訪問。









    域,用戶,組,角色



      一個(gè)J2EE的用戶與一個(gè)操作系統(tǒng)的用戶是相似的。典型的,兩種用戶都是人??墒沁@兩種用戶卻是不同的。J2EE服務(wù)器認(rèn)證服務(wù)是不知道當(dāng)你登錄到操作系統(tǒng)時(shí)你提供的用戶名和密碼的。J2EE服務(wù)器認(rèn)證服務(wù)是與操作系統(tǒng)的安全機(jī)制沒有聯(lián)系的。這兩種安全服務(wù)管理著不同域的用戶。

    J2EE服務(wù)器的認(rèn)證服務(wù)包括并且與下面的組成部分相互影響:



          • 域 ---- 一個(gè)被相同認(rèn)證策略控制的用戶和組的集合。



    • 用戶 ---- 一個(gè)在J2EE1.4應(yīng)用服務(wù)器里定義的個(gè)人的(或者應(yīng)用   程序的)身份。用戶能夠與組建立聯(lián)系。



    • 組 ---- 一組被認(rèn)證的用戶,他們是按一般的特性分類,定義在J2EE應(yīng)用服務(wù)器上的。



    • 角色 ---- 為了獲得訪問在應(yīng)用中一組特定的資源的許可而定義的一個(gè)抽象的名字。一個(gè)角色可以比作是一把可以打開某個(gè)鎖的鑰匙。很多人可能都配有這樣一把鑰匙,而鎖不管你是誰,只要你有合適的鑰匙就行了。



    J2EE服務(wù)器的認(rèn)證服務(wù)能夠管理在不同域中的用戶。在J2EE 1.4 應(yīng)用服務(wù)器的版本中,文檔和證書域是提前為應(yīng)用服務(wù)器配置好的。

    當(dāng)使用文檔域(file realm)時(shí),J2EE服務(wù)器的認(rèn)證服務(wù)通過檢查文檔域來驗(yàn)證用戶身份。這個(gè)域被用來認(rèn)證除了使用HTTPS協(xié)議和證書的Web瀏覽器客戶端以外的所有客戶端。

    一個(gè)文檔域的J2EE用戶可以屬于一個(gè)J2EE組。(在證書域里的用戶是不可以的。)一個(gè)J2EE組是一類按照一般特性分類的用戶群,比如按照工作題目或者客戶個(gè)性等一般特性分類。舉個(gè)例子,大多數(shù)的電子商務(wù)應(yīng)用的客戶很可能屬于一個(gè)CUSTOMER組,但是大的客戶就應(yīng)該屬于PREFERRED組。把用戶分類成組使得控制大量用戶的訪問更加容易。EJB層的安全部分(959頁)將會(huì)展示如何控制用戶訪問Enterprise beans。

    當(dāng)使用證書域時(shí),證書被用來和HTTPS協(xié)議一起來認(rèn)證Web瀏覽器客戶端。為了驗(yàn)證在證書域中的用戶的身份,認(rèn)證服務(wù)驗(yàn)證一個(gè)X.509證書。要學(xué)習(xí)創(chuàng)建這種證書的一步步的指令,請看Setting Up Digital Certificates(第933頁)。X.509證書的公共名字域是被用作為主要的名字。







    設(shè)置安全角色



    當(dāng)你設(shè)計(jì)一個(gè)enterprise bean或者Web組件時(shí),你應(yīng)該總想著將會(huì)訪問這個(gè)組件的各類用戶。比如,一個(gè)人力資源部門的Web應(yīng)用,對于某個(gè)被設(shè)計(jì)為admin角色的人和某個(gè)被設(shè)計(jì)為director角色的人可能有不同請求URL。admin角色可能讓你看到某些雇員的數(shù)據(jù),但是director的角色卻可以使你能看到薪水信息。每一種安全角色都是一個(gè)抽象的邏輯用戶組,它是由組裝這個(gè)應(yīng)用的人定義的。當(dāng)一個(gè)應(yīng)用被部署時(shí),部署人員將把這些角色映射到運(yùn)行環(huán)境中的安全身份上。

    一個(gè)J2EE組也代表了一類用戶,但是它與角色是有不同的范圍的。一個(gè)J2EE組是為了整個(gè)J2EE應(yīng)用而設(shè)計(jì)的,而一個(gè)角色只是與J2EE服務(wù)器中的一個(gè)特定的應(yīng)用有關(guān)。

      請參照使用部署工具設(shè)置安全需求部分(917頁),來學(xué)習(xí)創(chuàng)建一個(gè)Web應(yīng)用的角色。

    為了創(chuàng)建一個(gè)J2EE應(yīng)用的角色,就要在EAR文件中聲明它。比如,你可以用部署工具按照下面的過程創(chuàng)建一個(gè)角色。

    1、       選擇一個(gè)應(yīng)用。

    2、       在角色的標(biāo)簽面板里,點(diǎn)擊Add來給表添加一行。

    3、       在Name列,填入一個(gè)安全角色的名稱,例如bankCustomer。

    4、       點(diǎn)擊展開圖標(biāo)添加一個(gè)關(guān)于這個(gè)安全性角色的描述,例如銀行的顧客。

    5、       點(diǎn)擊OK。

    在你能夠映射角色到用戶或組(參考將角色映射到用戶或組(913頁))之前,你必須首先創(chuàng)建哪些用戶或者組(參考管理用戶(913頁))。









    管理用戶

    添加被授權(quán)的用戶到應(yīng)用服務(wù)器。

    1、       假如你還沒有開啟應(yīng)用服務(wù)器的話,就先將它啟動(dòng)。當(dāng)啟動(dòng)或停止J2EE應(yīng)用服務(wù)器時(shí),就會(huì)看到一啟動(dòng)時(shí)應(yīng)用服務(wù)器的信息。

    2、       如果你沒有開啟管理員控制臺(tái),就要先開啟它。你可以通過打開Web瀏覽器,瀏覽http://localhost:4848/asadmin來打開控制臺(tái)。如果你在安裝中改變了默認(rèn)的Admin端口,就輸入正確的端口號(hào)取代4848。

    3、       輸入在安裝時(shí)你寫的用戶名和密碼。

    4、       在Admin控制臺(tái)的樹里展開安全節(jié)點(diǎn)。

    5、       再展開域節(jié)點(diǎn)(Realms node)。

    6、       選擇文檔域(file realm)。

    7、       點(diǎn)擊管理用戶(Manage Users)按鈕。

    8、       點(diǎn)擊New來為file realm添加一個(gè)新的用戶。

    9、       輸入用戶的名字、密碼和用戶將要屬于的組。點(diǎn)擊OK添加用戶到file realm的用戶列表中。

    10、     當(dāng)你完成這個(gè)任務(wù)后點(diǎn)擊Logout。









    將角色映射到用戶和組

      當(dāng)你正在開發(fā)一個(gè)J2EE應(yīng)用時(shí),你不需要知道這個(gè)將要運(yùn)行的應(yīng)用的域里定義了哪些用戶的類別。在J2EE平臺(tái)上,安全構(gòu)架提供了一種機(jī)制來自動(dòng)映射在應(yīng)用里定義的角色到runtime realm里定義的用戶或組。在你的應(yīng)用被部署后,J2EE服務(wù)器的管理員將會(huì)把應(yīng)用的角色映射到file realm的用戶或組。

    使用部署工具來映射應(yīng)用程序中定義的角色到J2EE用戶和(或)組:

    1、使用在Managing Users(page 913)中討論的Admin控制臺(tái)添加被授權(quán)的用戶和/或組到file realm。你必須在映射用戶和組到應(yīng)用程序的安全角色之前先為應(yīng)用服務(wù)器定義它們。

    2、在部署工具中創(chuàng)建或者打開一個(gè)Web應(yīng)用。使用部署工具創(chuàng)建一個(gè)應(yīng)用將在Packaging Web Modules(94頁)中講述。

    3、在部署工具的樹中選擇這個(gè)Web應(yīng)用。選擇安全標(biāo)簽面板。我們使用安全標(biāo)簽面板來添加一個(gè)安全約束到Web應(yīng)用。如果你希望了解更多的關(guān)于安全約束的信息,請參考保護(hù)Web資源部分(Protecting Web Resource) (page 916)。點(diǎn)擊添加約束來添加一個(gè)安全約束到應(yīng)用程序。

    4、點(diǎn)擊“添加Collection”來添加一個(gè)Web資源的Collection到應(yīng)用程序中。

    5、點(diǎn)擊Edit Roles來選擇哪個(gè)角色被授權(quán)訪問應(yīng)用程序中受限部分的資源。

    6、在安全約束對話中被授權(quán)角色上點(diǎn)擊Edit Roles。

    7、點(diǎn)擊Add來添加一個(gè)新的角色。點(diǎn)擊在Name下的單元格。比如,添加CUSTOMER和MANAGER的角色。點(diǎn)擊OK退出這次對話。

    8、通過選擇每一個(gè)角色并且點(diǎn)擊Add,添加這兩個(gè)角色到被授權(quán)的用戶列表中。

    9、點(diǎn)擊OK退出Authorized Roles對話。

    10、選擇安全角色映射標(biāo)簽面板來把在應(yīng)用服務(wù)器中定義的用戶映射到應(yīng)用程序中定義的角色。

    11、在角色名字面板里選擇一個(gè)角色名,比如MANAGER。這些是我們在安全約束對話中定義的被授權(quán)角色的角色名字。

    11、     點(diǎn)擊Add User/Group to Role。(如果這個(gè)按鈕是灰色的,那么在繼續(xù)之前先登錄到Admin服務(wù)器)。使用這個(gè)對話來選擇一個(gè)特定的用戶或組映射到MANAGER角色上。然后,點(diǎn)擊Map to Role。當(dāng)MANAGER角色在角色名字面板中被選擇時(shí),如果你已經(jīng)選擇了一個(gè)用戶,那么他的名字將會(huì)顯示在用戶名字面板中。當(dāng)MANAGER角色被選中時(shí),如果你已經(jīng)選擇了一個(gè)組,那么它的名字將會(huì)顯示在組名字面板中。當(dāng)你定義了使用Admin控制臺(tái)的用戶時(shí),你提供給他們名字,密碼和組。任何一個(gè)在此步被指派給選擇的組的用戶將擁有訪問受限Web應(yīng)用的權(quán)限。





    Web層的安全

    在Web應(yīng)用中,安全是使用部署工具在Web應(yīng)用部署描述符中配置的。當(dāng)設(shè)置被輸入部署工具中后,它們被存在WAR包包含的部署描述符中??梢赃x擇部署工具里的Tools菜單的Descriptor Viewer來查看產(chǎn)生的部署描述符??梢圆榭碈hapter3獲得更多關(guān)于部署描述符的信息。

      在創(chuàng)建WAR包后,選擇安全標(biāo)簽面板來配置它的安全元素。參考Setting Security Requirements Using deploytool以獲得更多關(guān)于使用部署工具來完成以下這些任務(wù)的信息。

    l     用戶授權(quán)方法

    在部署工具的安全標(biāo)簽里的用戶授權(quán)方法區(qū)使你能夠定義用戶如何被提示登錄。如果被定義了,用戶在能夠訪問被安全約束保護(hù)的資源前必須被認(rèn)證過。用戶認(rèn)證方法將在Using Login Authentication(Page920)里討論。

    l     安全約束

    安全約束被用來定義對一個(gè)資源集合的訪問權(quán)限的,使用的是它們的URL映射。安全約束將在Protecting Web Resources(Page 916)里討論。

    l     Web資源集合

    Web資源集合是安全約束的一部分并且描述了一個(gè)針對被保護(hù)資源的URL模式和HTTP方法對。Web資源集合將在Protecting Web Resources(Page 916)里討論。

    l     網(wǎng)絡(luò)安全需求(安全驗(yàn)證方式)

    網(wǎng)絡(luò)安全需求被用于配置HTTP的基本驗(yàn)證或者在SSL基礎(chǔ)上基于表單驗(yàn)證。要為每一個(gè)安全約束選擇一種安全驗(yàn)證方式。網(wǎng)絡(luò)安全需求(安全驗(yàn)證方式)將在What is Secure Socket Layer Technology(Page 932)中討論。

    l     安全角色

    安全角色部分被用來設(shè)定哪些在此應(yīng)用中定義了的角色被授權(quán)訪問Web資源集合。這些在應(yīng)用中定義的角色必須被映射到在服務(wù)器上定義的用戶和組上。被授權(quán)的角色已經(jīng)在Setting Up Security Roles(Page 912)中討論過了。

    這些部署描述符的元素可以直接寫入Web.xml,也可以使用應(yīng)用程序的部署工具來創(chuàng)建,比如deploy-tool。本文檔描述了如何使用部署工具創(chuàng)建部署描述符。

      一些Web應(yīng)用的安全元素需要在Web server的部署描述符中定位,而不是僅僅在Web application的部署描述中定位。這些內(nèi)容將在Installing and Configuring SSL Support(page 932),Using Programmatic Security in Web Tier(page 931),和Setting up Security Roles(page 912)中講訴。
    相關(guān)文章
    本頁查看次數(shù):