久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

WebLogic Server的Identity Assertion

 昵稱7161666 2011-06-30

WebLogic Server的Identity Assertion時間:2011-02-06 00:07來源:dev2dev 作者:Sudhir Upadhyay 點擊:182次本文詳細(xì)介紹了BEA WebLogic Server 如何提供一種機(jī)制來通過Identity Assertion執(zhí)行周邊身份驗證。當(dāng)前端訪問管理器執(zhí)行身份驗證,,而多個后端服務(wù)器相信來自前端的請求是經(jīng)過認(rèn)證的,,并且不需要額外身份驗證時,這種 方法就非常有用,。
 在一些典型的公司W(wǎng)eb應(yīng)用程序安全部署中,,訪問受保護(hù)應(yīng)用程序的用戶通過企業(yè)身份/訪問管理產(chǎn)品,如Netegrity 的 SiteMinder,,IBM 的WebSEAL 和Oblix 的 Oblix COREid,。然而,身份驗證服務(wù)被委派給應(yīng)用程序自身的提供程序或應(yīng)用服務(wù)器,。

  應(yīng)用服務(wù)器根據(jù)Web應(yīng)用程序部署描述文件中定義的安 全約束來授權(quán)用戶,。然而,在已配置安全約束用于提供身份驗證之前,,Web容器需要確定用戶經(jīng)過了身份驗證才能開始工作,。也就是說,前端訪問管理器需要提供 一些信息給后端Web容器,,以保證Web容器不會試圖重新認(rèn)證經(jīng)過身份驗證的用戶,。要實現(xiàn)這一點,前端訪問管理器可能需要把用戶憑證(用戶名/密碼)交給 后端服務(wù)器,。然而,,這會由于下面兩個原因受挫:

在典型部署中,前端身份管理軟件和后端應(yīng)用服務(wù)器之間的連接不通過安全套接字層(SSL),,這意味著用戶證書將以非加密的純文本形式傳遞,。
即使連接是安全的,,后端服務(wù)器仍會用前端訪問管理器傳來的證書,對已認(rèn)證的用戶再進(jìn)行一次身份驗證,,除非它能驗證請求來自一個可靠來源,,即已認(rèn)證的用戶。
  這一情形需要進(jìn)行周邊身份驗證,,也就是只能在前端訪問管理器對用戶進(jìn)行身份驗證,。BEA WebLogic Server 為實現(xiàn)身份斷言提供了Identity Assertion。本文為您詳細(xì)分析了WebLogic Server中Identity Assertion的實現(xiàn),。建議您先回顧http://e-docs./wls/docs81/dvspisec/ia.html中Identity Assertion提供程序的產(chǎn)品文檔,。

簡介

   從高級觀點出發(fā),Identity Assertion是通過從前端訪問管理器向后端應(yīng)用服務(wù)器傳遞令牌來實現(xiàn)的,。從根本上來說,,斷言是關(guān)于主體(比如用戶)的一些事實(陳述)的聲明。令牌 是從一個系統(tǒng)傳到另一系統(tǒng)的一條信息,,它可被用于確認(rèn)某個特定用戶的身份,。令牌和斷言相結(jié)合,即構(gòu)成了Identity Assertion的基礎(chǔ),。本質(zhì)上,,Identity Assertion提供程序是一種特殊的身份驗證形式,它讓用戶或系統(tǒng)流程能使用令牌進(jìn)行身份斷言,。

Web應(yīng)用程序安全

  在介紹Identity Assertion的實現(xiàn)細(xì)節(jié)前,,讓我們簡要說明Web應(yīng)用程序安全模式的原理。servlet規(guī) 范提供了通過servlet容器實現(xiàn)Web應(yīng)用程序安全的指導(dǎo)方針,。規(guī)范指定的兩種安全形式是聲明性的和程序性的,。當(dāng)Web應(yīng)用程序安全為聲明性時,安全 性通過部署符(web.xml)在應(yīng)用程序之外進(jìn)行配置,。身份驗證方法,,或者說提示用戶登錄的方法,將通過Web描述符文件web.xml中 的<login-config>元素來指定,。如果登錄配置出現(xiàn)并且包含一個不為零的值,,在訪問任何<security- constraint>約束的資源之前,用戶必須進(jìn)行身份驗證,。

  當(dāng)用戶試圖訪問受保護(hù)的Web資源時,,Web容器就會激活身份驗證機(jī)制,該身份驗證機(jī)制已經(jīng)為部署描述文件(web.xml)中的資源進(jìn)行了配置,,它位于<login-config>元素內(nèi)部的<auth-method>標(biāo)簽之間,,就像這樣:

<login-config><auth-method>BASIC</auth-method></login-config>  以下是實現(xiàn)Web應(yīng)用程序安全的有效身份驗證方法:

NONE:不提示用戶進(jìn)行身份驗證。
BASIC:Web服務(wù)器提示用戶輸入用戶名/密碼并對提供的信息進(jìn)行身份驗證,。在此身份驗證方式中,,用戶不能定制搜集用戶名/密碼的表單。
FORM:在這種情況下,,您可以定制通過HTTP瀏覽器顯示給終端用戶的登錄屏幕和錯誤頁,。
CLIENT-CERT:這是一種比基本方法或表單方法更安全的身份驗證方法。它使用服務(wù)器的SSL和HTTP,,或者帶有公共密鑰證書(Public Key Certificates(的客戶端身份驗證,。安全套接字層(SSL)為TCP/IP連接提供了數(shù)據(jù)加密、服務(wù)器身份驗證,、消息完整性和可選的客戶身份驗證,。后面您會看到,WebLogic Server 正是使用這種身份驗證形式執(zhí)行身份斷言的。
   當(dāng)Web應(yīng)用程序安全是程序式時,,servlet 容器能實現(xiàn)某些HttpServletRequest 接口的方法,,用于身份驗證/授權(quán)試圖訪問受保護(hù)資源的用戶。Servlet 容器為程序式安全提供了額外的方法,,這些方法在規(guī)范中都沒有提到,。在WebLogic Server 中,提供額外方法的類是weblogic.servlet.security.ServletAuthentication,。 ServletAuthentication 允許servlet 中基于表單的身份驗證和程序式身份驗證,。它通過Security Realm 執(zhí)行身份驗證調(diào)用,并為會話設(shè)置用戶信息,。weak()方法用于密碼認(rèn)證而strong()用于基于證書的身份驗證,。后面我們將使用來自該類的方法,允許 通過相同Web應(yīng)用程序的多重身份驗證機(jī)制來對Web應(yīng)用程序用戶進(jìn)行身份驗證,。

Web應(yīng)用程序部署

  圖1代表Web應(yīng) 用程序常用的部署模型,。如圖所示,當(dāng)用戶試圖訪問受保護(hù)的Web應(yīng)用程序時,,前端訪問管理器將對這些用戶進(jìn)行身份驗證,,并把認(rèn)證過的用戶路由到后端應(yīng)用服 務(wù)器。如果Web應(yīng)用程序在部署描述文件中定義了安全約束而且角色/屬性存儲在目錄服務(wù)器上,,servlet容器調(diào)用安全API從底層目錄獲得用戶/組的 信息,。

 
圖1 Web 應(yīng)用程序部署

  讓我們大概了解一下有效用戶訪問受保護(hù)資源必須經(jīng)過的步驟,如部署模型中所示,。

用戶請求受保護(hù)的Web資源,。
前端Web服務(wù)器/身份驗證服務(wù)器對用戶進(jìn)行認(rèn)證。
如果用戶通過認(rèn)證,,請求就被傳給后端應(yīng)用服務(wù)器,。
然而,由于身份驗證規(guī)則/安全約束配置在Web應(yīng)用程序描述文件中,,servlet 容器需要從底層目錄存儲器中獲得用戶/組信息,。
應(yīng)用服務(wù)器為了使傳入的主題與底層存儲器的屬性相關(guān)聯(lián),,它需要確保用戶是經(jīng)過認(rèn)證的。
為執(zhí)行上述安全需求,,應(yīng)用服務(wù)器應(yīng)該重新認(rèn)證用戶,,或假定來自前端訪問管理器的請求是已認(rèn)證用戶發(fā)出的。
然而,,不推薦從應(yīng)用服務(wù)器進(jìn)行額外的重新認(rèn)證,,因為這需要額外的系統(tǒng)開銷。為避免額外的重新認(rèn)證調(diào)用,,應(yīng)用服務(wù)器的另一選擇是假定來自前端訪問管理器的請求來自已認(rèn)證用戶,,從而繞過身份驗證步驟。
  Identity Assertion或周邊身份驗證為應(yīng)用服務(wù)器提供了一種機(jī)制,,用于斷言前端請求是來自已認(rèn)證用戶的,,從而避免了重新認(rèn)證。這通過配置令牌來實現(xiàn),,令牌能與HTTP頭部請求一起從前端訪問管理器傳遞到后端應(yīng)用服務(wù)器,。下一節(jié)對此進(jìn)行了詳細(xì)的解釋。

令牌概述

   令牌主要是兩方之間傳遞的秘密代碼,。本質(zhì)上,,令牌是關(guān)于主體的斷言或聲明,該主體被斷言方看作是聲明性的(可信任的),。當(dāng)接收方收到令牌,,它會進(jìn)行一組 操作驗證傳入的令牌。如果令牌被驗證過,,就假定請求來自可信任的資源,,接收方就不會進(jìn)行額外的身份驗證。在典型的Web環(huán)境中,,令牌是通過HTTP頭部或 cookie傳遞的,。

  在當(dāng)前實現(xiàn)中,WebLogic Server 的默認(rèn)Identity Assertion 提供程序支持下列令牌:X.509,、CSI.PrincipalName,、CSI.ITTAnonymous 和CSI.X509CertChain CSI.DistinguishedName?!爸С帧绷钆祁愋捅举|(zhì)上意味著Identity Assertion 提供程序的運行時類(也就是IdentityAsserter SSPI實現(xiàn))能用assertIdentity方法來驗證令牌類型,。

   由于上述令牌可能無法滿足所有應(yīng)用程序的需求,您可以為自己的環(huán)境輕松地建立新的自定義令牌,。建立自定義令牌需要編寫自定義Identity Assertion 提供程序,,該程序能實現(xiàn)IdentityAsserter Security Service Provider Interface (SSPI)。WebLogic Server 的SSPI 提供了開發(fā)自定義安全提供程序的途徑。自定義令牌類型可以像一段字符串那樣簡單,。例如,,在Custom Identity Assertion Provider Implementation中定義下列代碼片段,也就定義了一種新的令牌類型,。

public final static String MY_TOKEN_TYPE = "MyCustomIAToken";

  定義了新的令牌類型后,,可以按BEA產(chǎn)品文檔中描述的WebLogic Console 一樣,對其進(jìn)行配置,。一旦配置完成并進(jìn)行了激活,這些令牌就可被WebLogic Security 架構(gòu)用于斷言傳入請求的身份,。

序列圖

圖2給出了執(zhí)行Identity Assertion 期間的步驟順序:

 
圖2 身份斷言序列

Web應(yīng)用程序部署過程中,,Web容器首先確定Web應(yīng)用程序的身份驗證方法被配置為CLIENT-CERT。
Web容器創(chuàng)建并初始化相應(yīng)的SecurityModule 在本例中,,它創(chuàng)建了CertSecurityModule ,。
當(dāng)客戶端訪問Web資源時,服務(wù)器的ServletSecurityManager 調(diào)用CertSecurityModule,,來檢查用戶訪問該資源的權(quán)限,。
然 后CertSecurityModule 調(diào)用服務(wù)器的安全模塊,尋找請求對象中的所有令牌,。CertSecurityModule 尋找在Identity Assertion 配置期間在HTTP頭部或cookie中配置的令牌,。實質(zhì)上,它迭代頭部值,,并試圖讓頭部值和WebLogic 控制臺中預(yù)定義的令牌相匹配,。
如果請求中出現(xiàn)了有效的令牌,SecurityModule 就試圖斷言用戶的身份,。
此時,,服務(wù)器的安全模塊將控制傳遞給自定義Identity Assertion 提供程序?qū)崿F(xiàn)。
自定義Identity Assertion 驗證程序驗證令牌的有效性并從中提取用戶名,。
自 定義Identity Assertion 提供程序生成JAAS CallBackHandler ,。Java Authentication and Authorization Service (JAAS) 是一組API,它啟用身份驗證服務(wù),,并執(zhí)行用戶訪問控制,。更多關(guān)于JAAS 的細(xì)節(jié),請參考http://java./products/jaas/,。
CallBackHandler 驗證包含一個回調(diào)名的回調(diào)清單(否則它會拋出一個異常),,并適當(dāng)?shù)卦O(shè)定用戶名。
NameCallBack 確保用戶出現(xiàn)在底層安全領(lǐng)域,,并且基于定義的規(guī)則授權(quán)用戶訪問,。
與JAAS的關(guān)系

   有一點很重要,Identity Assertion不受到JAAS 的保護(hù),也就是說JAAS對實現(xiàn)Identity Assertion不提供任何特定的指導(dǎo),。Assertion和JAAS唯一的關(guān)聯(lián)是Identity Assertion 的實現(xiàn)返回一個javax.security.auth.callback.CallbackHandler(http://java./j2se/1.4.2/docs/api/javax/security/ auth/callback/CallbackHandler.html),。 您可能會想起,當(dāng) JAAS LoginModule 需要與用戶通信時(例如,,要求用戶輸入用戶名和密碼),,它是通過調(diào)用CallBackHandler 實現(xiàn)的。然后CallBackHandler()方法生成適當(dāng)?shù)?CallBack 來獲得請求的信息,。在Identity Assertion的情況下,,自定義安全提供程序驗證請求中傳遞的令牌是有效的,隨后生成唯一的NameCallBack,。

多重身份驗證機(jī)制

  在本文前面,,我們回顧了Web應(yīng)用程序安全模型。在登錄配置中關(guān)于指定身份驗證方法的問題之 一是,,在某個指定時間,,一個Web應(yīng)用程序只能配置一個身份驗證方法。然而在某些情況下,,需要從多個源為用戶提供服務(wù),,也就是說,來自包含已定義令牌的可 信任來源(前端訪問管理器)的用戶和那些不是來自可信任來源的用戶,??赡馨▉碜詢?nèi)部網(wǎng)絡(luò)的用戶,他們可以直接訪問應(yīng)用服務(wù)器,。換句話說,,依賴于請求的來 源,servlet 安全實現(xiàn)可能需要生成兩種不同的CallBackHandlers,。然而,,servlet 規(guī)范中沒有規(guī)定允許多重身份驗證方法。這需要調(diào)用特定于Web容器提供程序的編程式解決方案,。正如我前面指出的,,WebLogic 為Web應(yīng)用程序內(nèi)部的程序式身份驗證提供weblogic.servlet.security.ServletAuthentication。 ServletAuthentication 方法為身份驗證提供了兩種重要的方法:

weak():從請求中獲取用戶名和密碼后,,為AUTHENTICATED或FAILED_AUTHENTICATION返回一個int值,,對該用戶進(jìn)行認(rèn)證,并將其設(shè)置到會話中,。
strong():與“WebLogic”(默認(rèn))域相反,,強(qiáng)身份驗證使用客戶端證書鏈作為身份驗證憑證。
   圖3提供了此配置的步驟,。在Identity Assertion 中,,servlet 容器調(diào)用ServletAuthentication的strong()方法,。為相同的Web應(yīng)用程序?qū)崿F(xiàn)多重身份驗證方法(基于CLIENT-CERT 和FORM方法),選項包含在登錄表單通過編程調(diào)用方法,。也就是說,,登錄表單先執(zhí)行強(qiáng)身份驗證(CLIENT-CERT)。如果在請求頭部或cookie 中出現(xiàn)了一個有效令牌,,就允許用戶對資源進(jìn)行訪問,。如果強(qiáng)身份驗證失敗,登錄表單會提示輸入用戶名和密碼,。要注意的是,,因為BASIC形式的身份驗證不提 供定制身份驗證表單的能力,也沒有在表單中提供編程能力,,所以不可能通過編程方式對BASIC和CLIENT-CERT身份驗證方法進(jìn)行組合,。

 
圖3 使用多重身份驗證方法時的步驟


替代解決方案

   Identity Assertion不是這個問題唯一可行的解決方案。其他解決方案包括在兩方之間傳遞共享秘鑰(或令牌),。在這種情況下,發(fā)送方和接收方要事先都同意共享 的秘鑰,。如果帶有正確共享秘鑰值的請求到達(dá)時,,接收方就能相信請求是來自可信任來源并允許訪問底層資源。

  其他解決方案諸如基于IP的信任也可以在此使用,。在這種情況下,,在請求被授權(quán)進(jìn)行訪問之前,應(yīng)用程序會檢查請求是否來自預(yù)配置的,、可信任的IP地址,。通常是DMZ中Web服務(wù)器的IP。

結(jié)束語

   本文詳細(xì)介紹了BEA WebLogic Server 如何提供一種機(jī)制來通過Identity Assertion執(zhí)行周邊身份驗證,。當(dāng)前端訪問管理器執(zhí)行身份驗證,,而多個后端服務(wù)器相信來自前端的請求是經(jīng)過認(rèn)證的,并且不需要額外身份驗證時,,這種 方法就非常有用,。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多