码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-03-06 13:29:04      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:hello   val   win   tool   脚本   手动   调用   str   java8   

.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配置:

 技术图片

  

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

 

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

标签:hello   val   win   tool   脚本   手动   调用   str   java8   

原文地址:https://www.cnblogs.com/JerryTian/p/10482527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!