OSB (Oracle Service Bus)上代理服務的安全設置(一)

就安全而言,最常見的兩個概念,就是Authentication和Authorization。在OSB(Oracle Service)裏,如果你對你的Proxy Service什麼都沒設置過,那麼一般來說,你除了使用HTTP進行傳輸,沒有身份驗證(Authentication),沒有權限校驗(Authorization)。

如果你想做多一些安全的約束,例如,你想給外網系統調用你的服務,不想讓誰都可以調用你的服務,那麼,最簡單的方式,你可以做兩件事:

1、HTTP Basic身份驗證

該選項要求客戶端調用服務時需要輸入身份信息(Basic驗證是在HTTP層面的事情),密碼走的是Base64加密(其實不算加密),服務器拿到用戶名密碼後在服務器上的Realm上驗證。這個Realm默認的時候就是OSB/WLS底下管理的內置的一個LDAP,我們通常啓動WebLogic的那個帳號就是這個LDAP裏面的帳號。

這裏寫圖片描述

可以看到,除了HTTP Basic,還可以選擇客戶端證書或者Custom的驗證,這些相對複雜一些,本文不再深入講了。

2、權限校驗

默認的情況下,代理服務是Everyone都可以調用的。有了身份驗證,系統知道和確認了當前調用人是誰,你就可以進一步約束哪些用戶可以調用哪些服務。下圖是進入這部分設置的第一步界面:

這裏寫圖片描述

然後,在“Transport Access Control”部分可以點擊你的代理服務:
這裏寫圖片描述

可以看出,默認的做法是“Group: everyone”可以訪問。點擊“Add Conditions”,你就可以定製自己的邏輯了。例如“User=?”,或者“Role=?”,或者“Group=?”的屬於可以訪問,如下圖:

這裏寫圖片描述

在這幾個頁面,你還可以看到,OSB提供一種所謂Custom Authentication的設置,即通過XPath在報文中找出Username和Password來做身份驗證。因爲如果不是這種Custom的方式的話,用戶名和密碼是保存在HTTP的頭上的(你可以看看HTTP協議規範)。通過Custom的方式,客戶端的代碼可以更加簡單,因爲用戶名和密碼可以是某方法的參數,這些參數可以用XPaht找到。如下圖:

這裏寫圖片描述

3、HTTPS傳輸

你或許擔心,密碼明文或者傳輸,那可怎麼辦呢?簡單的做法就是使用HTTPS進行傳輸,設置也很簡單,上面的第一個圖就有這個選項。

但是使用起來,這選項並不是那麼簡單的,還有不少事情要做,這些都是所謂證書的問題。

如果你使用正式購買的證書,安裝在OSB服務器上,一般“正式”的證書,其根已經在各個客戶端上安裝且信任,服務調用時不會再有信任的問題。如果你不想花這部分前,你想自己搞證書服務器或者使用自己給自個簽名的證書,也可以,但是你就要把證書也安裝在各個客戶端上,讓各個客戶端信任你的這個證書。這種方式不同的客戶端的使用方法,設置方法可能不同,這是比較煩的地方。當然,也可用編程的方式,每次調用服務時用API來做信任證書的事情,但這個也不簡單。

4、WS-Security

這是高級活,其基本要求也是有證書(PKI那套),使用起來有不少的功能,包括部分加密,簽名,反抵賴等等,令人羨慕。不過用起來也不簡單,有時間再詳談羅。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章