摘 自: http://blog.sina.com.cn/s/blog_72b7a82d0100yyp8.html

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

本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使用WCF,WCF里面提供了更多的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。

1.首先要自定义SoapHeader,须继承System.Web.Services.Protocols.SoapHeader。

using System;
using System.Collections.Generic;
using System.Web;namespace WuFrame
{/// <summary> ///自定义的SoapHeader /// </summary>  public class WuSoapHeader : System.Web.Services.Protocols.SoapHeader{private string userName = string.Empty;private string passWord = string.Empty;/// <summary> /// 构造函数 /// </summary> public WuSoapHeader(){}/// <summary> /// 构造函数 /// </summary> /// <param name="userName">用户名</param> /// <param name="passWord">密码</param> public WuSoapHeader(string userName, string passWord){this.userName = userName;this.passWord = passWord;}/// <summary> /// 获取或设置用户用户名 /// </summary> public string UserName{get { return userName; }set { userName = value; }}/// <summary> /// 获取或设置用户密码 /// </summary> public string PassWord{get { return passWord; }set { passWord = value; }}}
}

2.添加WebService,并编写相应代码。

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.SessionState;
using System.Web.Services;using WuFrame;
using BSFW.Dao;
using BSFW.Model;
using System.Data;namespace BSFW
{/// <summary>/// Test 的摘要说明/// </summary>[WebService(Namespace = "http://wuyf.ws/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.ComponentModel.ToolboxItem(false)]public class Test : System.Web.Services.WebService{public WuSoapHeader myHeader = new WuSoapHeader();[WebMethod(EnableSession = true)]//[WebMethod] [System.Web.Services.Protocols.SoapHeader("myHeader")]public string HelloWorld(string name){bool isLogin = false;string loginMsg = string.Empty;if (myHeader.UserName.Equals("wu") && myHeader.PassWord.Equals("123")){isLogin = true;loginMsg = "验证成功!";}else{isLogin = false;loginMsg = "验证失败! username: " + myHeader.UserName + ", passowrd:" + myHeader.PassWord;}if (Session["name"] == null){Session.Add("name", "");}Session["name"] = name;return Session["name"].ToString() + ", 验证消息: " + loginMsg;}   }

}

3.客户端调用,分别使用不设置SoapHeader与设置SoapHeader。

        WsTest.Test test = new WsTest.Test();System.Net.CookieContainer cc = new System.Net.CookieContainer();private void button1_Click(object sender, EventArgs e){WsTest.WuSoapHeader header = new WsTest.WuSoapHeader();header.UserName = txt_User.Text.ToString();header.PassWord = txt_Pwd.Text.ToString();test.WuSoapHeaderValue = header;MessageBox.Show(test.HelloWorld("winformApp_" + Guid.NewGuid().ToString()));}

添加自定义SoapHeader可以成功调用WebService,否则不能调用WebService,从而实现对Web Service的非法调用。这种方法存在一定的弊端,就是在每一个WebService方法上都要进行一下验证,如果用户名与密码存储在数据库中,每调用一次WebService都要访问一次数据库进行用户名与密码的验证,对于频繁调用WebService来说,数据库压力很大。然而少量WebService调用这种方式还是一种不错的选择。

当然可以启用 Session 来解决以上所述的问题...

WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]相关推荐

  1. .Net WebService基于SoapHeader实现安全认证

    主要是接收android传递的数据容易受到误导,多留意参数变化. 一.新增一个类MySoapHeader using System; using System.Collections.Generic; ...

  2. 基于SpringBoot 2.3的WebService指南(包含案例)

    基于SpringBoot 2.3的WebService指南 文章目录 基于SpringBoot 2.3的WebService指南 前言 一.WSDL解析和使用 1.引入文档的wsdl 2.使用CXF解 ...

  3. iOS开发笔记 基于wsdl2objc调用asp.net WebService

    1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...

  4. 基于Springboot整合RestTemplate调用Webservice接口

    1.基于Springboot整合RestTemplate调用Webservice接口,如果感觉使用webservice客户端调用服务器端不会,或者不方便 的时候,可以尝试使用RestTemplate来 ...

  5. 【webservice】Java JAX-WS和JAX-RS webservice

    一.webservice请求的工作原理: 客户端--> 阅读WSDL文档 (根据文档生成SOAP请求) -->发送到Web服务器-->交给WebService请求处理器-->处 ...

  6. 基于Hash的消息认证码HMAC简介及在OpenSSL中使用举例

    HMAC(Hash-based Message Authentication Code):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个 ...

  7. 密钥生成并配置_基于密钥的SSH认证流程

    " 基于密钥的SSH认证流程." 01 - 基于密钥的SSH认证流程 Client生成一对密钥,将公钥存放于Server上,私钥自己留着. Server收到Client的登录请求, ...

  8. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...

  9. 利用OpenSSH实现基于秘钥的认证

    利用OpenSSH实现基于秘钥的认证 SSH协议介绍:     SSH是Secure Shell的缩写,意思是安全的shell          目前版本有 ssh v1和ssh  v2:在目前工作中 ...

最新文章

  1. 合并果子(贪心,优先队列)
  2. 【Jupyter Notebook】启动命令行(写进.sh文件直接调用shell)
  3. 收藏:DPDK内存基本概念
  4. 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
  5. python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解
  6. 论 BUG调试与(程序猿)初学者
  7. 动手学servlet(六) 过滤器和监听器
  8. LeetCode刷题开源手册
  9. 2019帝豪gs装软件_继悬浮式车顶之后,2019年这些设计将会成为主流!
  10. JavaScript 误区
  11. springboot里面的porm配置问题
  12. Java HttpServlet 详解
  13. 股票实战专题:6000102019一二月分析收盘价绘图
  14. 【mongo系列】 六、mongo分片集群
  15. 计算机时间怎么改24小时模式,怎么修改电脑的时间为24小时制啊?
  16. 图片不变形,按照等比例缩小或扩大显示
  17. 互联网营销的技巧方法和套路!
  18. 中文版sublime text3的下载网址和注意方法
  19. 更正:解决报告无法下载的问题-跟国家虚拟仿真实验平台对接上传附件接口遇到的问题
  20. 金蝶Apusic应用服务器

热门文章

  1. python区块链开发_Fabric区块链Python开发详解
  2. 基本算法之前缀和与差分的是使用
  3. 【项目管理】CMMI内容整理
  4. Eclipse的Git插件下载项目出现 No project found
  5. linux搭建Nexus初次体验
  6. Leaflet中加载Geoserver发布的WMS服务显示地图
  7. SpringBoot+Swagger2.7进行接口测试后台无法获取请求参数
  8. SpringBoot整合spring-ws开发webservice接口(全流程详细教程)
  9. 软考-信息系统项目管理师-项目管理成熟度模型
  10. 做好过程质量保证QA工作的几个关键方面