2.2 WebSphere IICE密文登錄原理
WebSphere IICE加密機制是對BLOWFISH算法的一種實現。一旦安裝成功,WebSphere IICE會使用此算法產生一個密鑰文件同時要保證此文件在客戶端和CONNECTOR端的CLASSPATH中。如下是應用BLOWFISH進行加/解密的一個過程示例。
列表1:應用blowfish進行加、解密過程
客戶端的加密過程:
?? //Create and encrypt an AuthBundle. ?? AuthBundle aB = new AuthBundle(user, password); ?? try { ????? //Encrypt the auth bundle ????? (new BlowfishSealer()).seal(aB); ?? } catch(KeyNotFoundException knfe) { ????? ... ?? } ??
服務器端的解密過程: ...use the sealed bundle to logon to a chosen repository. ????? .. ????? // Unseal the auth bundle if sealed. ????? if(authBundle.isSealed()) { ???????? // Instantiate an unsealer proxy. ???????? UnsealerProxy uP = new UnsealerProxy(); ???????? try { ??????????? // Attempt to unseal the bundle. ??????????? // The UnsealerProxy will delegate unsealing // to a new instance of "my.magic.Unsealer" ??????????? uP.unseal(authBundle); ???????? } catch(UnsealerNotFoundException unfe) { ??????????? throw new LogonException("Unable … unsealer.", unfe); ???????? } catch(KeyNotFoundException knfe) { ??????????? throw new LogonException("Unable ….", knfe); ???????? } catch(InvalidKeyClassException ikce) { ??????????? throw new LogonException("Invalid decryption...", ikce); ???????? } catch(EncryptionException ee) { ??????????? throw new LogonException("An error ….", ee); ???????? } ????? } ????? ...
|
2.3 WebSphere IICE Web Services SOAP消息安全概述
由于WebSphere IICE使用Axis作為SOAP引擎,我們首先需要了解一下Axis的機制。可以說,Axis的任務就是處理消息。當Axis的核心處理邏輯啟動時,一系列的句柄會被順序的調用。調用的順序是由兩個因素來決定的--部署文件和此引擎為客戶端還是服務器端。
WebSphere IICE Web Services會被一系列的客戶端和服務器端Axis/JAX-RPC句柄處理。為了能使此安全解決方案正常工作,這些句柄必須被安裝并且要保證安裝順序正確。本文提供了兩套句柄分別實現消息的加密/解密和消息完整性驗證功能,同時要保證這四個句柄被正確的安裝在客戶端和服務器端的WSDD配置文件中,這樣才能保證對于每一個從客戶端發出的消息都被客戶端的證書加密和簽名,同時才能保證服務器端接受到的每一個消息都是被驗證的而且每一個消息都經過了解密。這樣我們就實現了SOAP消息的完整性和機密性。
同時,用戶可以選擇是否使用此安全機制。如果用戶傾向于非安全機制,他所需要做的就是注釋客戶端和服務器端的WSDD配置文件。