利用WSE 加密SOAP報文(5)

來源:互聯網
上載者:User
加密 解密收到的報文

不管是在用戶端還是在伺服器端,WSE總是在SecurityInputFilter實現報文解密的,由於對稱式加密需要由公用密鑰派生出來的加密金鑰,你需要建立一個SecurityInputFilter能夠調用的方法來得到這個對稱金鑰,然後你就能使用包含在EncryptedData中的密鑰和演算法資訊來幫你找到正確的共用密鑰和密碼編譯演算法了。這個方法必須實現在從Microsoft.Web.Services.Security.IDecryptionKeyProvider派生出來的類中。在我的例子中,DecryptionKeyProvider.GetDecryptionKey方法返回了對稱金鑰,如下:



public DecryptionKey GetDecryptionKey(string encAlgorithmUri,

KeyInfo keyInfo)

{



//重新創造同樣的用於表示128位密鑰的16個位元組

byte[] keyBytes = {48, 218, 89, 25, 222, 209, 227, 51, 50, 168, 146,

188, 250, 166, 5, 206};





//重新創造表示初始化向量的8個位元組(64位)

byte[] ivBytes = {16, 143, 111, 77, 233, 137, 12, 72};



SymmetricAlgorithm mySymAlg = new TripleDESCryptoServiceProvider();

mySymAlg.Key = keyBytes;

mySymAlg.IV = ivBytes;



//重新建立對稱式加密密鑰

DecryptionKey myKey = new SymmetricDecryptionKey(mySymAlg);



return myKey;

}

即便在我的方法中並沒使用他們,WSE還是要把KeyInfo元素和密碼編譯演算法的URI傳遞給這個方法的,決定使用哪一個共用密鑰或者密碼編譯演算法來產生對稱金鑰



為了讓SecurityInputFilter能夠訪問到GetDecryptionKey方法,下面的配置資訊必須加入到應用程式的設定檔中(也就是 app.config 檔案)



<configuration>

...

<microsoft.web.services>

<security>

<decryptionKeyProvider

type="MyClient Assembly.DecryptionKeyProvider,

MyClientAssembly" />

</security>

type 屬性不能有任何過多的空格或者任何換行。他們只包含上面的內容以增強可讀性,這個也可一用WSE設定工具來修改。一旦DecryptionKeyProvider類被添加到用戶端而且WSE安全支援已經配置好了,WSE將自動攔截加密資料,一個基於標準的Web服務的2次開發平台程式,就可以讓你隨心所欲的給用戶端編程了。

使用 X.509 憑證來給SOAP報文加密

正如我前面提到的,非對稱操作有一定開銷。當傳輸大量資料時,從效能上來說,用非對稱演算法來加密這些資料會顯得不太實際,WSE就這個問題,實現了一種偽非對稱性加密(pseudo-asymmetric encryption)。和非對稱性加密的報文相比,WSE使用一個非對稱性演算法和X.509認證的一個公開備份,以此來加密對稱金鑰,而實際上這些被用來給報文加密。當收到報文後,SecurityInputFilter得到和X.509認證相關聯的私人密鑰,以此給對稱金鑰解密,然後用解密後的密鑰給報文本文解密。為了能讓這個例子能夠正常工作,一個來自受信任的認證認證的X.509認證(支援加密),必須出現在客戶機器上目前使用者帳號的個人認證儲藏室裡面,這個認證的私人密鑰也必須出現在本地機器在主管Web服務的伺服器的帳號裡。另外,CA憑證鏈結中的一個認證必須出現在用戶端的受信任儲存室裡,那樣WSE才知道可以信任接受到的X.509認證。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。