zoukankan      html  css  js  c++  java
  • .net 客户端调用java或.net webservice进行soapheader验证

    .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

  • 相关阅读:
    web 学习资源整理
    CodeSmith 学习资料收集
    常用 T_SQL 语句
    SQL Server 2000查询分析器自定义查询快捷键
    插入标识列 identity_insert
    c# 上传FTP文件
    (.Net 3.5Sp1)WebForm使用System.Web.Routing
    SPQuery.ViewAttributes
    ChatterBot之linux下安装mongodb 02
    linux端口开放指定端口的两种方法
  • 原文地址:https://www.cnblogs.com/JerryTian/p/10482527.html
Copyright © 2011-2022 走看看