WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。

具体实现步骤:

1、 定义一个 soapheader派生类用来实现 WebService访问权限验证

  1. <span style="font-size:10px;">using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.HtmlControls;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. /// <summary>
  11. ///MySoapHeader 的摘要说明
  12. /// </summary>
  13. public class MySoapHeader:System .Web .Services .Protocols .SoapHeader
  14. {
  15. private string _uname = string.Empty;//webservice访问用户名
  16. public string Uname
  17. {
  18. get { return _uname; }
  19. set { _uname = value; }
  20. }
  21. private string _password = string.Empty;//webservice访问密码
  22. public string Password
  23. {
  24. get { return _password; }
  25. set { _password = value; }
  26. }
  27. public MySoapHeader()
  28. {
  29. //
  30. //TODO: 在此处添加构造函数逻辑
  31. //
  32. }
  33. public MySoapHeader(string uname, string upass)
  34. {
  35. init(uname, upass);
  36. }
  37. private void init(string uname, string upass)
  38. {
  39. this._password = upass;
  40. this._uname = uname;
  41. }
  42. //验证用户是否有权访问内部接口
  43. private bool isValid(string uname, string upass, out string msg)
  44. {
  45. msg = "";
  46. if (uname == "admin" && upass =="admin")
  47. {
  48. return true;
  49. }
  50. else {
  51. msg = "对不起!您无权调用此WebService!";
  52. return false;
  53. }
  54. }
  55. //验证用户是否有权访问外部接口
  56. public bool isValid(out string msg)
  57. {
  58. return isValid(_uname, _password,out msg);
  59. }
  60. }
  61. </span>

2、 定义有需要验证的 WebService。

  1. <span style="font-size:10px;">using System;
  2. using System.Collections;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Services;
  6. using System.Web.Services.Protocols;
  7. using System.Xml.Linq;
  8. /// <summary>
  9. ///test 的摘要说明
  10. /// </summary>
  11. [WebService(Namespace = "http://tempuri.org/")]
  12. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  13. //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  14. // [System.Web.Script.Services.ScriptService]
  15. public class test : System.Web.Services.WebService {
  16. public test () {
  17. //如果使用设计的组件,请取消注释以下行
  18. //InitializeComponent();
  19. }
  20. public MySoapHeader myheader = new MySoapHeader();
  21. [WebMethod]
  22. public string HelloWorld() {//普通WebService,无需验证
  23. return "Hello World";
  24. }
  25. [SoapHeader("myheader")]//加入此头部的WebService需要验证,不加则为普通WebService无需验证
  26. [WebMethod(Description = "根据产品编号查询产品的价格", EnableSession = true)]
  27. public string GetProductPrice2(string ProductId)
  28. {
  29. string msg = "";
  30. //验证是否有权访问
  31. if (!myheader.isValid(out  msg))
  32. {
  33. return -1;//返回错误信息
  34. }
  35. return ProductId;
  36. }
  37. }
  38. </span>

3、 客户端调用方法

引用 WebService定义 WebService名称为 :Myservice

  1. <span style="font-size:10px;">using System;
  2. using System.Configuration;
  3. using System.Data;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.HtmlControls;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. public partial class _Default : System.Web.UI.Page
  11. {
  12. protected void Page_Load(object sender, EventArgs e)
  13. {
  14. myservice.test te = new abc.test();
  15. myservice.MySoapHeader myhead = new MySoapHeader();
  16. myhead.Uname = "admin";//输入WebService访问用户名
  17. myhead.Password = "admin";//输入WebService访问密码
  18. te.MySoapHeaderValue = myhead;//
  19. string test = te.GetProductPrice2("ok!");
  20. Response.Write(aa);//用户名、密码输入正确则输出ok 否则输出 错误msg
  21. }
  22. } </span>

也推荐另外一个cookie的方式http://blog.csdn.net/dz45693/article/details/6151170

webService访问加密-Soapheader的更多相关文章

  1. webService访问加密

    WebService加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用. 具体实现步骤: 1. 定义一个 soaph ...

  2. WebService安全加密

    众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用.那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括 ...

  3. WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]

    摘 自: http://blog.sina.com.cn/s/blog_72b7a82d0100yyp8.html WebService基于SoapHeader实现安全认证[webservice][. ...

  4. WebService访问oracle数据库本地调试

    WebService访问oracle数据库本地调试-一步一个坑 上篇文章提到我们额数据库挂了,重装了数据库,然后呢我需要在本地调试WebService,看看那些数据结构缺失,迁移到新数据库中去.踩坑之 ...

  5. webservice安全性之 SoapHeader自定义身份验证

    相信很多开发者都用过WebService来实现程序的面向服务,本文主要介绍WebService的身份识别实现方式,当然本文会提供一个不是很完善的例子,权当抱砖引玉了. 首先我们来介绍webservic ...

  6. 指定WebService访问的语言

    场景: 在访问ERP发布的WebService时,由于其指定了访问语言,导致不指定访问语言时,会有部分数据丢失. 解决: 通过WSDL工具生成代理类后,再次对其中的GetWebRequest方法进行重 ...

  7. Delphi调用WebService(通过SoapHeader认证)经验总结

    项目(Delphi开发)需要调用另一个系统的WebService.走了不少弯路,现记录总结一下经验.以下是WebService要求: 1.WebService概述 营销Webservice接口采用Ap ...

  8. webservice访问的几种方式

    今天在对接的客户用到了webservice,最终采用wsimport生成本地代理方式以SDK的形式对接,但是想的完整的总结一下ws的几种调用方式. 发布服务的IP地址是:192.168.125.116 ...

  9. C#访问加密的SQLite数据库

    前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLi ...

随机推荐

  1. PHP实现文件上传下载——心在忙而已

    这一周都没有写什么东西,是啊,一周时间都没有学习太多新的东西,除了开车. 妈蛋啊,天天中午去学车然后两周没有午觉的日子还是很崩溃的,加上之后工作压力带来的心忙,宝宝不开心啊. 不过,也是自己不是那么能 ...

  2. stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)

    在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(trai ...

  3. java 24 - 6 GUI之 创建只能输入数字的文本框

    需求: 创建一个含有标签和文本框的窗体,其中文本框只能输入数字 步骤:(大致上) 创建窗体对象 创建标签对象 创建文本框对象 把组件添加到窗体中 设置标签的监听事件,对键盘按下的数据进行监听 设置窗体 ...

  4. Eclipse的 JSON Edit插件

    1. Json-Eclipse-Plugin https://github.com/boothen/Json-Eclipse-Plugin 2. 另外一个JSON Edit工具 https://tfe ...

  5. HTML 学习笔记 JavaScript(事件)

    事件流: 事件流: 描述的是从页面中接收事件的顺序 也可以理解为事件在页面中传播的顺序: 事件: 就是用户或浏览器自身执行的某种动作 例如 click(点击) load(加载) mouseover(鼠 ...

  6. Linux打包压缩.md

    Linux下打包压缩命令 下面学习一下压缩和打包的相关命令,首先得先明确两个概念,即:压缩和打包 .我们实际使用中一般是打包和压缩结合的使用,为了学习下面简要的介绍一下压缩文件或目录的命令. 压缩:将 ...

  7. jquery无缝间歇向上滚动(间断滚动)

    jquery无缝间歇向上滚动 JS部份 $(function(){ var $this = $(".renav"); var scrollTimer; $this.hover(fu ...

  8. DEDECMS之九 文章采集

    到很多网友都为织梦(DEDECMS)的采集教程头疼,的确,官方出的教程太笼统了,什么都没说,换个网站你什么都做不了,这个教程是最详尽的教程,让你一看即会! 一.列表采集 第一步.我们打开织梦后台点击采 ...

  9. PHP PSR规范

    PHP PSR-1 基本代码规范(中文版)  http://segmentfault.com/a/1190000002521577PHP PSR-2 代码风格规范 (中文版)  http://segm ...

  10. 阿里云修改默认的ssh端口

    Linux服务器的ssh服务支持远程访问服务器,默认的ssh端口号是22.为了安全起见,很多用户会将端口号由22改为其他的端口号.  如果遇到修改端口号并重启ssh服务后,新的端口号不生效,请参考以下 ...