揭開Java 安全標準的神祕面紗-java基礎

在過去的三年中,人們開發出了許多關於信息安全(Information Security)的新標準。其中最爲人們所認可的是Web Services安全性(Web Services Security,WSS)、安全性斷言標記語言(Security Assertion Markup Language,SAML)和可擴展訪問控制標記語言(Extensible Access Control Markup Language,XACML)。本文會簡單介紹這三者,包括它們是如何開發出來的、爲什麼需要它們、如何使用它們、它們之間以及它們與現有各種安全性標準之間的關聯。以後的文章會對這些內容進行更詳細的介紹。

 

簡介

WSS、SAML和XACML之間有許多共性。或許最明顯的就是它們都使用XML表示信息。其次是,因爲這三種可用的安全服務都已經在計算機系統中應用多年了,爲了更加適用於大型分佈式環境,如互聯網,它們都具有一些特定的功能。此外,三者都參考並結合了現有的安全性標準,並儘量減少對已有功能的重複。

兩個主要原因促使三者都採用了XML技術。第一,XML使它們便於擴展,以便可以以一種原有格式無法實現的方式來滿足某種特殊需求。第二,XML支持採用大量可用的軟件工具進行處理的實現。對於WSS來說,還有一個原因,即,WSS被設計爲支持與SOAP的語法和處理模型進行緊密集成,而SOAP是用XML定義的。

SAML

授權和審計跟蹤是常見的安全服務。以前,大多數系統設計時都假設做出訪問控制決定所必需的所有信息都由單個系統來處理,並且所有要記錄的數據都放在審計跟蹤中。但是,大規模分佈式系統通常是由多個組織使用各種產品建立的。這意味着用戶可能要由不同的驗證方使用不同的方法進行驗證。此外,不同的驗證方還要保存有關用戶特性和屬性的不同信息。集中管理所有這些能力和信息是不現實的。SAML提供了標準格式來表示身份驗證、用戶屬性以及請求和接受該標準的協議。這被稱爲身份聯盟(Identity Federation)。

在OASIS的最初開發階段,SAML只指定了該身份信息的生產者與消費者之間的通信。SAML定義瞭如何創建有關用戶屬性和身份驗證事件的斷言,以及如何以一種靈活而可擴展(以便滿足其它需求)的方式獲得這些信息。SAML還詳細定義了一些常見場景(如:Web單點登錄)來確保互操作性。

Liberty Alliance Project和Internet2 Shiboleth group進一步地增強和擴展了SAML。增加了許多新功能,以便支持SAML驗證方之間的通信,更加詳細地描述身份驗證方法,註銷用戶並保護隱私。這些工作又提交給OASIS,併合併到SAML2.0中,SAML2.0在2005年3月成爲一個OASIS標準。SAML被設計爲用於多種不同的環境,支持使用不同的身份驗證和加密方法。它支持各種不同的消息流,甚至可以用於不使用XML的遺留環境中。

XACML

XACML,也是由OASIS開發的,是一種表示訪問控制策略的語言。大多數計算機專業人士都熟悉基於權限或訪問控制列表(ACL)的訪問控制。但是,這些機制缺少表示複雜策略(在現實系統中經常需要用到)的能力。因此,訪問控制策略通常會嵌入應用程序代碼中。這使得更改策略(或者只是找出哪些策略正在實施)變得很困難。

XACML能夠實際地使用任何可用的信息來決定是否該許可對一個資源的訪問。也可以關聯附加的動作、被調用的契約和決定,例如,要求請求的數據在90天后刪除。

XACML可以根據資源的屬性做出決定,包括資源的內容或環境因素,如日期、時間或位置。它也會考慮到與請求關聯的各方的特性,比如角色或組成員關係。這可能不只包括請求方,還包括其他方,比如接受數據方或請求中轉方。

XACML 2.0在2005年2月成爲一個OASIS標準。它在具有多個創建策略的管理員的大規模環境中運行良好。因爲SAML可用於任何訪問控制系統,XACML可以與SAML一起使用,或者單獨使用。有專門的支持它們一起工作的特性。

WSS

WSS指定了如何保護通過網絡傳遞的SOAP消息。它包括身份驗證、完整性保護和保密性。它沒有指定如何實現訪問控制,但提供了可以用於訪問控制的信息。在WSS出現之前,最常見的保護消息的方法是使用SSL或TLS協議。這些協議仍然適用於許多應用程序,但WSS提供了更多的功能和靈活性。

SSL和TLS是對整個消息進行加密,而WSS允許有選擇性地實現加密。例如,它允許應用程序防火牆檢查沒有加密的部分。此外,WSS還支持複雜的多方交互,這是處理複雜的電子商務事務所需要的。

此外,WSS在基礎架構選擇方面提供了更大的靈活性。同SSL和TLS一樣,它也支持X.509技術,還可以使用Kerberos、SAML或以前的普通用戶名和密碼。因爲WSS作用於SOAP層,在信息在網絡上傳輸甚至在對消息進行排隊或存儲時,它都能發揮作用。

 

WSS採用W3C所開發的XML數字簽名(XML Digital Signature)和XML加密(XML Encryption)標準。WSS通過將稱爲Security的XML元素插入SOAP標題中而發揮作用。其中包含所有有關應用於消息的身份驗證、數字簽名和加密的信息。它向接受方提供解密和驗證消息所需的信息。密鑰和身份驗證信息可以使用X.509證書、Kerberos ticket、SAML斷言或其他方法進行定義。

2004年,WSS 1.0成爲一個OASIS標準。現在,WSS 1.1就要完成了。由於WSS所提供的靈活性,不同產品間的互操作可能會比較困難。爲了解決這個問題,Web Services Interoperability Organization組織(WS-I)正在開發一個配置文件,以便減少可變性,並給出使用WSS(以及SSL和TLS)的最佳實踐。這個Basic Security Profile (BSP)的草案已經公佈,並預計於2006年初完成。WS-I成員還構建了一個示例應用程序來說明WSS和測試工具(可以檢查消息是否服從BSP)的正確使用。

結束語

上面介紹的三個安全性標準在設計時就被賦予了極大的靈活性,這是通過使用XML而實現的。SAML和XACML在幾乎所有的環境中都支持身份驗證服務,但更適用於大規模分佈式系統。在SOAP環境中,WSS提供了明確的消息保護,但是在軟件基礎架構方面,它提供了很多選擇。有XML作爲其共同的基礎,這三個標準可以有效地共同使用,或者也可以單獨使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章