博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net 客户端调用java或.net webservice进行soapheader验证
阅读量:6285 次
发布时间:2019-06-22

本文共 1956 字,大约阅读时间需要 6 分钟。

.net 客户端调用java或.net webservice进行soapheader验证

最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservice的安全验证基于soapheader。

借此机会,顺便整理一下调用.net webservice 和 java webservice 的验证方式,记录下来。

 

.net端web服务

 1.若web服务是采用.net webservice实现,如下代码:

///     [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服务的实现如下图。

CXF配置:

 

  

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

 

转载于:https://www.cnblogs.com/JerryTian/p/10482527.html

你可能感兴趣的文章
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>