六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

使用WSE 加密SOAP報文(7)

[摘要]給收到的報文解密當收到一個由X.509證書加密后的報文后,SoapInputFilter會自動嘗試使用用戶密鑰儲存室的私有密鑰來進行解密,當然,這個需要告訴WSE運行時哪里可以找到這個證書的額外配置信息。這個信息由應用程序配置文件的Security元素所指定,這個例子在客戶端上的應用程序配置文件是...
給收到的報文解密

當收到一個由X.509證書加密后的報文后,SoapInputFilter會自動嘗試使用用戶密鑰儲存室的私有密鑰來進行解密,當然,這個需要告訴WSE運行時哪里可以找到這個證書的額外配置信息。這個信息由應用程序配置文件的Security元素所指定,這個例子在客戶端上的應用程序配置文件是App.config。對于 X.509加密,你只需要添加一個x509子節(jié)點,內(nèi)容和下面一樣就可以了

<x509

storeLocation="CurrentUser"

verifyTrust="true"

allowTestRoot="false" />

在我的例子中,我將x509節(jié)點的storeLocation屬性設為CurrentUser,假設證書在當前用戶的證書儲存室里,當我使用了來自CA的受信任證書之后,我也將verifyTrust設為true了。這些屬性還能夠用WSE的設置工具來修改。利用這些信息,WSE能夠得到報文中證書的私有密鑰,還能用這個來給對稱性會話密鑰解密,解密后的內(nèi)容到頭來還要給報文正文解密。

選擇用于解密的報文元素

當整個消息正文由默認設置給加密后,WSE能被用來給SOAP報文內(nèi)的特定元素加密;唯一的問題是,在Security頭元素那的元素不能被加密。你還可以加密嵌套的元素,

在這個例子服務中,我修改了GetXmlDocument方法用的X.509版本,用一個基于X.509的安全Token來同時給EncryptedSubResponse和它的EncryptedResponse父節(jié)點進行數(shù)字化加密,返回的XML文檔如下:

<Response>

<NotEncrypted>

回應報文的這里沒有必要被加密

</NotEncrypted>

<EncryptedResponse>

<EncryptedSubResponse>

這里是敏感數(shù)據(jù).

</EncryptedSubResponse>

</EncryptedResponse>

</Response>

為了加密一個元素,它需要一個wsu:Id屬性,以便當XML被序列化后引用可以加到該節(jié)點上了。命名空間wsu被定義為:

xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility

為了完成這個,我將這個XML加到一個新的XML文檔,然后通過.NET框架支持的Microsoft XML文檔對象模型(DOM)給它添加一個Id屬性,此外還需要將配件System.Xml加入到工程引用里面,加上下面的話:

using System.Xml;

using System.Xml.Serialization;

當我將多個Id屬性加到嵌套的元素上后,我由EncryptedSubResponse元素開始依次遍歷到它的父節(jié)點EncryptedResponse,如下:



string [] myId = {"Id:" + Guid.NewGuid(),"Id:" + Guid.NewGuid()};





//創(chuàng)建一個用于返回XML的XML文檔

XmlDocument myDoc = new XmlDocument();

myDoc.LoadXml("<Response>" +

"<NotEncrypted>回應報文的這里沒有必要加密" +

"</NotEncrypted>" +

"<EncryptedResponse>" +

"<EncryptedSubResponse>" +

"這里是敏感數(shù)據(jù). " +

"</EncryptedSubResponse>" +

"</EncryptedResponse>" +

"</Response>");



//得到EncryptedSubResponse節(jié)點

XmlNode = myDoc.FirstChild.LastChild.FirstChild;





//向上遍歷元素,添加兩個Id屬性

//向上保證內(nèi)部的多數(shù)元素可以優(yōu)先被加密

//否則我們會得到一個異常

for (int i=0;i<myId.Length;i++)

{



//創(chuàng)建新的Id屬性

string wsu = "http://schemas.xmlsoap.org/ws/2002/07/utility";

XmlNode myAttr = myDoc.CreateNode(XmlNodeType.Attribute, "wsu",

"Id", wsu);

myAttr.Value = myId[i];



//將屬性添加到文檔

root.Attributes.SetNamedItem(myAttr);

root = root.ParentNode; // 移動到父節(jié)點

}

假設我早就用我前面的邏輯得到了來自X.509證書的安全記號,我將這些引用添加到EncryptedData元素,如下:



//循環(huán)遍歷Id值,將其添加到新的EncryptedData元素上

for (int i=0;i<myId.Length;i++)

{

//創(chuàng)建一個新的頭,”#”是的前綴,用來保證相關的URI能夠引用到頭

EncryptedData myEncHeader = new EncryptedData(myToken, "#"+myId[i]);

//添加一個新的頭到集合中

myContext.Security.Elements.Add(myEncHeader);

}

//返回加密數(shù)據(jù)

return myDoc;



主站蜘蛛池模板: 五月六月婷婷 | 先锋在线资源站 | 五月婷婷婷 | 中文字幕日韩专区 | 日本网址在线观看 | 最新国产视频 | 日韩不卡高清视频 | 天堂午夜| 天天摸夜夜操 | 青青草国产精品 | 午夜视频体验区 | 日产精品一卡2卡三卡4乱码久久 | 又粗又黄又猛又爽大片app | 日韩一级欧美一级 | 一本伊人 | 日韩中文一区 | 外国一级黄色 | 亚欧美| 四虎影院免费视频 | 中文字幕第九页 | 色成人免费网站 | 最近韩国日本免费观看 | 色婷婷一区二区三区四区成人网 | 日韩精品一 | 午夜欧美日韩在线视频播放 | 日韩性网| 中文字幕在线天堂 | 小视频在线观看免费 | 色狠狠干 | 热の综合热の国产热の潮小说 | 午夜国产精品福利在线观看 | 日韩欧美视频一区二区 | 亚洲区欧美中文字幕久久 | 在线看污视频 | 青青青爽视频在线观看 | 天堂亚洲国产日韩在线看 | 五月天婷婷丁香 | 日韩精品中文字幕一区三区 | 一二三四社区在线高清3 | 三级韩国一区久久二区综合 | 日日摸人人拍人人澡 |