.net 客戶端調用java或.net webservice進行soapheader驗證

.net 客戶端調用java或.net webservice進行soapheader驗證java

最近項目中有業務須要跨平臺調用web服務,客戶端和服務器之間採用非對稱加密來保證數據的安全性,webservice的安全驗證基於soapheader。web

藉此機會,順便整理一下調用.net webservice 和 java webservice 的驗證方式,記錄下來。spring

 

.net端web服務安全

 1.若web服務是採用.net webservice實現,以下代碼:服務器

/// </summary>
    [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要容許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消註釋如下行。 // [System.Web.Script.Services.ScriptService]
    public class externalWebService : System.Web.Services.WebService { public WebServiceSecurityHeader webServiceSecurityHeader = new WebServiceSecurityHeader(); BizTcmCmdrugsOrg bizTcmCmdrugsOrg = new BizTcmCmdrugsOrg(); [WebMethod,SoapHeader("webServiceSecurityHeader")] public string HelloWorld(string name) { if (SecurityValidate()) { return "安全的服務: " + name; } else { return "對不起,無權訪問!"; } } private bool SecurityValidate() { if (webServiceSecurityHeader.SecurityKey == null) { return false; } if (webServiceSecurityHeader.SecurityKey.Equals("123")) { return true; } else { return false; } }

 

2. java環境,webservice採用cxf 實現:測試

JAVA端web服務加密

a.具體 java 端 cxf 的web服務的實現以下圖。spa

CXF配置:.net

 

  

b.定義攔截器:代理

  

.net端的webservice代理類和客戶端代碼:

1.C#引用java的webservice跟引用C#的webservice同樣,引用URL就能夠使用了,可是C#引用java的webservice不會自動生成soapheader,須要本身添加。

 

 

2.創建soapheader類

 

 3. Reference.cs代理類中默認不會生成soapheader相關代碼,要手動添加。有個問題,因爲reference.cs中的代碼是引用web服務時自動生成的,因此你添加了代碼後,若從新更新引用的webservice,手工增長的代碼會被清除,須要再次添加,這是個坑。

  

 代理方法增長SoapHeader屬性

 

4.客戶端調用代碼:

 

 

上面是.net調用 java web服務進行 soapheader 驗證的主要過程,在如下環境中測試經過:

.net環境: win10,vs2015,

java環境:java8,cxf3.1.12,spring boot 1.5.13

相關文章
相關標籤/搜索