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

摘要:
.net客户端调用java或Netweb服务进行soap头验证最近,业务需要在项目中跨平台调用web服务。客户端和服务器之间使用非对称加密以确保数据安全。web服务的安全验证是基于soap标头的。借此机会整理调用的验证方法。netwebservice和javawebservice并记录它们。将SoapHeader属性添加到代理方法4。客户端调用代码:以上是的主要过程。net调用javaweb服务进行soap头验证。测试在以下环境中通过:。net环境:win10,vs2015,java环境:java8,cxf3.1.12,springboot1.5.13

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

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

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

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

CXF配置:

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

  

b.定义拦截器:

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

  

.net端的webservice代理类和客户端代码:

1.C#引用java的webservice跟引用C#的webservice一样,引用URL就可以使用了,但是C#引用java的webservice不会自动生成soapheader,需要自己添加。

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

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

2.建立soapheader类

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

 3. Reference.cs代理类中默认不会生成soapheader相关代码,要手动添加。有个问题,由于reference.cs中的代码是引用web服务时自动生成的,所以你添加了代码后,若重新更新引用的webservice,手工增加的代码会被清除,需要再次添加,这是个坑。

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

  

 代理方法增加SoapHeader属性

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

4.客户端调用代码:

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

上面是.net调用 java web服务进行 soapheader 验证的主要过程,在以下环境中测试通过:

.net环境: win10,vs2015,

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

免责声明:文章转载自《.net 客户端调用java或.net webservice进行soapheader验证》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 爬虫入门(二)—— IP代理使用cocoapods安装及常用命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

apk反编译与破解

以前版本的bat的名称可能有点不同。)获取d2j-dex2jar.bat目录中的classs-dex2jar.car文件,然后使用jd_GUI工具打开jar文件以查看java源代码。...

高斯键盘设置指南

高斯键盘设置指南如何打开蓝牙模式电源:蓝牙需要电源。高斯GS87-D有两种通电方式:将键盘背面的开关转到on;使用USBType-C电源切换模式:Fn+P用于在有线模式和无线模式之间切换。按下Fn+P,Fn+PP右上角的键盘灯闪烁3次。有线模式和蓝牙模式相互切换。但是,没有指示灯指示当前模式是有线模式还是蓝牙模式如何连接蓝牙代码匹配:长按Fn+P,直到P键快...

微信小程序----返回上一页刷新或当前页刷新

1.Reload()方法刷新当前页面;2.replace()方法刷新当前页面;3.页面自动刷新当前页面;实现js刷新当前页面的三种方法使用微信小程序--返回上一页刷新或当前页面刷新1.在实现效果之前,您需要了解微信小应用程序的页面生命周期。如果你不太清楚,你可以看到微信小程序——页面生命周期;2.我们可以知道微信小程序页面由五个循环组成:onLoad、onR...

C# AES的128位、192位、256位加密

这里将不解释C#AES的128位、192位和256位加密原理。这里我们主要讨论AES的CBC加密模式中128位、192位和256位加密之间的差异,并参考对称加密和块加密的四种模式。16位密钥对应128位加密,24位密钥对应192位加密,32位密钥对应256位加密,矢量必须为16位。“);ifthrownewException(”指定的密钥长度不能小于16位。...

移动端媒体查询的一些尺寸参考

device-width是设备实际的宽度,不会随着屏幕的旋转而改变,因此并不适合开发响应式网站。比如iphone5s的屏幕分辨率宽为640,由于retina显示策略,当scale设置为1的时候,对应的media中取到的width为320,当scale设置为0.5的时候,width为640,而device-width始终是320。总结1.device-widt...

Java 实体类转json对象,属性名转key后首字母强制被转成小写的解决方案

  2.原因分析我们知道在Java规范中,实体类的属性名的命名规范需要遵循首字母小写的驼峰命名法,既是规范也是约束也是牢笼。如果不喜欢这种实现方式,还可以迭代json取值,将key的首字母转大写,也是可以哒。...