加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

通过SOAPHeader增强WebService的安全性

发布时间:2020-12-17 00:38:53 所属栏目:安全 来源:网络整理
导读:阅读目录 一:前言 二:SOAPHeader实现身份验证步骤 三:通过SOAPHeader实现身份验证步骤实例 一:前言 在互联网上,调用WebService往往需要进行身份验证,我们的WebService不可以让任何人都能够调用的,一般能调用我们的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();
??????? }

  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读