.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

相关文章
相关标签/搜索