当前位置:   article > 正文

在WebService加入安全验证

在WebService加入安全验证

WebService的优点就不多说了,使用XML作为数据格式,可以跨平台、跨语言与多种应用程序交互。

今天,我们来实现在WebService中加入安全验证机制。

我们先,建立一个ASP.NET项目,在其中添加一个DemoService的WebService。

  1. /// <summary>
  2. /// DemoService 的摘要说明
  3. /// </summary>
  4. [WebService(Namespace = "http://tempuri.org/")]
  5. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  6. [System.ComponentModel.ToolboxItem(false)]
  7. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  8. // [System.Web.Script.Services.ScriptService]
  9. public class DemoService : System.Web.Services.WebService
  10. {
  11. [WebMethod]
  12. public string HelloWorld()
  13. {
  14. return "Hello World";
  15. }
  16. }

一切都是默认的,之后,我们再加入一个Windows控制台项目,添加Web引用,将刚刚建好的WebService加入到项目中,并调用该WebService。

显示结果:

接下来,我们使用令牌的方式为WebService添加安全验证。

1.New一个安全令牌类,这个类要继承SoapHeader,我们是利用SoapHeader实现安全验证的。

  1. /// <summary>
  2. /// 安全验证令牌
  3. /// </summary>
  4. public class SecurityToken : SoapHeader
  5. {
  6. //安全密钥
  7. public string Key { get; set; }
  8. }

2.修改WebService的的类,支持安全验证

  1. /// <summary>
  2. /// DemoService 的摘要说明
  3. /// </summary>
  4. [WebService(Namespace = "http://tempuri.org/")]
  5. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  6. [System.ComponentModel.ToolboxItem(false)]
  7. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  8. // [System.Web.Script.Services.ScriptService]
  9. public class DemoService : System.Web.Services.WebService
  10. {
  11. //公有令牌变量
  12. public SecurityToken Token;
  13. [WebMethod]
  14. [SoapHeader("Token")] //声明需要调用安全令牌
  15. public string HelloWorld()
  16. {
  17. if (!this.IsValiToken())
  18. return string.Empty;
  19. return "Hello World";
  20. }
  21. /// <summary>
  22. /// 验证是安全令牌是否正确
  23. /// </summary>
  24. /// <returns></returns>
  25. private bool IsValiToken()
  26. {
  27. bool flag = false;
  28. if (this.Token != null && this.Token.Key == "dotnetdev.cn")
  29. flag = true;
  30. return flag;
  31. }
  32. }

3.修改调用端。更新WebService引用,修改代码。

  1. //实例化WebService
  2. ServiceReference.DemoServiceSoapClient client = new ServiceReference.DemoServiceSoapClient();
  3. //实例化令牌
  4. ServiceReference.SecurityToken token = new ServiceReference.SecurityToken();
  5. //设置令牌的密钥
  6. token.Key = "dotnetdev.cn";
  7. //调用WebService
  8. Console.WriteLine(client.HelloWorld(token));
  9. Console.ReadKey();

注:这里使用的是添加服务引用的方式,如果添加Web引用的方式可能稍显不同。不过原理是一样的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/996388
推荐阅读
相关标签
  

闽ICP备14008679号