• 通过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();
            }

      

  • 相关阅读:
    udhcpd配置及使用
    射频全网通笔记(附全球频段划分及主要运营商对应表)
    Source Insight教程
    关于学习
    一次OGG ERROR OGG-01091 Unable to open file "./dirdat/th079817" 的问题解决
    mysql建立的一个自动更新组织树案案例
    1055
    了解一个A*数据库的数据
    mysql安装
    通过CONTRAB 执行脚本进行监控
  • 原文地址:https://www.cnblogs.com/menglin2010/p/2427251.html
Copyright © 2020-2023  润新知