.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=

随便看看

MySQL高可用集群方案

资源不足的小团队或小项目直接建议阿里云和腾讯云II。一些常见解决方案介绍1。MySQL主从架构2。MHA架构参考:生产环境MySQL数据库集群MHA在线实现解决方案MHA目前是MySQL高可用性中比较成熟的解决方案。...

JAVA 实现CLOB转String

CLOB定义了用于在数据库中保存文件的类型。SQLCLOB是一种内置类型,它将一个大型字符对象作为列值存储在数据库表的一行中。默认情况下,驱动程序使用SQLlocator实现Clob对象,这意味着Clob对象包含指向SQLCLOB数据的逻辑指针,而不是数据本身。Clob对象在其创建的事务期间有效。在一些数据库系统中,文本也用作CLOB的别名。例如,SQL S...

实用干货丨如何使用Prometheus配置自定义告警规则

前言普罗米修斯是一个用于监控和报警的开源系统。在普罗米修斯的术语中,它所监视的事物被称为目标。在本文中,我们将逐步展示如何安装Prometheus来监控/创建报警,并根据自定义事件配置自定义报警规则。当条件满足时,它将发出警报集成Alertmanager来处理客户端应用程序发送的警报。警报管理器将与发送警报通知的电子邮件帐户集成。了解普罗米修斯操作员根据普罗...

HTTP请求报文

不仅报表样式可以传递请求参数,请求url也可以以类似于键值对的方式传递数据...

RedisTemplate

在SpringBoot@RequestMapping(“/del/{key}”)publicStringdel(@PathVariable(“key”)Stringkey){try{//当该键不存在时,异常redisTemplate.delete(key);return“Success”;}将不会引发catch(Exceptione){returne.get...

《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

矩阵和图像的操作cvAnd函数其结构voidcvAnd;程序实例#include#include#includeintmain{IplImage*src1,*src2,*src3;src1=cvLoadImage;src2=cvLoadImage;src3=cvLoadImage;cvAnd;cvShowImage;cvShowImage;cvShowIma...