zoukankan      html  css  js  c++  java
  • 通过SOAPHeader增强WebService的安全性

      阅读目录

      一:前言

      二:SOAPHeader实现身份验证步骤

      三:通过SOAPHeader实现身份验证步骤实例

      一:前言
      在互联网上,调用WebService往往需要进行身份验证,我们的WebService不可以让任何人都能够调用的,一般能调用我们的WebService的不是我们的客户,就是我们的合作方,调用WebService时我们需要身份验证,只有通过身份验证的用户才能调用相应的WebService资源,我们可以通过SOAPHeader自定义的身份验证方式实现验证

      二:SOAPHeader实现身份验证步骤

      1:自定义一个类比如CustomSOAPHeader,该类继承自SOAPHeader

      2:在CustomSOAPHeader类里面写我们自定义验证的逻辑

      3:在WebService中声明CustomSOAPHeader类型的公共成员header,并在暴露给客户端调用的方法中调用header的自定义验证方法实现身份验证功能

      4:在客户端首先创建CustomSOAPHeader类型的实例对象header,然后将用户名和密码传入header,最后调用WebService实例对象的CustomSOAPHeaderValue属性将header传入WebService

      三:通过SOAPHeader实现身份验证步骤实例

      1:Service.cs

       public class CustomSOAPHeader : SoapHeader
      {
          public CustomSOAPHeader()
          {
              //
              //TODO: 在此处添加构造函数逻辑
              //
          }
          public string name;
          public string password;
          public bool IsValid(string strUserName, string strPassword)
          {
              if (strUserName == "三星电子" && strPassword == "abc")
                  return true;
              else
                  return false;
          }
      }

      public class Service : System.Web.Services.WebService
      {
          public Service ()

        {

              //如果使用设计的组件,请取消注释以下行 
              //InitializeComponent(); 
          }
          public CustomSOAPHeader header;
          [WebMethod]
          [SoapHeader("header")]
          public string HelloWorld() 
          {
              if (header.IsValid(header.name, header.password))
                  return "SOAP标头验证成功,返回HelloWorld";
              return "SOAP标头验证失败";
          }
      }

      2:Program.cs

       static void Main(string[] args)
            {
                localhost.Service service = new localhost.Service();
                localhost.CustomSOAPHeader header = new localhost.CustomSOAPHeader();
                header.name = "三星电子";
                header.password = "abc";
                service.CustomSOAPHeaderValue = header;
                Console.WriteLine(service.HelloWorld());
                Console.ReadLine();
            }

      

  • 相关阅读:
    教师不能太过于追求技巧
    两个有意思的数学谜题
    终于有博客啦
    215665645555
    Python 正则表达式之 sub 和 subn函数的使用
    python中可变数据类型和不可变数据类型
    python面试题手动总结答案锦集
    如何优雅的使用python中的代码注释
    使用win32com操作woord的方法记录
    redis问题:redis-server.exe双击闪退 win10系统
  • 原文地址:https://www.cnblogs.com/menglin2010/p/2427251.html
Copyright © 2011-2022 走看看