WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]
摘 自: 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]相关推荐
- .Net WebService基于SoapHeader实现安全认证
主要是接收android传递的数据容易受到误导,多留意参数变化. 一.新增一个类MySoapHeader using System; using System.Collections.Generic; ...
- 基于SpringBoot 2.3的WebService指南(包含案例)
基于SpringBoot 2.3的WebService指南 文章目录 基于SpringBoot 2.3的WebService指南 前言 一.WSDL解析和使用 1.引入文档的wsdl 2.使用CXF解 ...
- iOS开发笔记 基于wsdl2objc调用asp.net WebService
1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...
- 基于Springboot整合RestTemplate调用Webservice接口
1.基于Springboot整合RestTemplate调用Webservice接口,如果感觉使用webservice客户端调用服务器端不会,或者不方便 的时候,可以尝试使用RestTemplate来 ...
- 【webservice】Java JAX-WS和JAX-RS webservice
一.webservice请求的工作原理: 客户端--> 阅读WSDL文档 (根据文档生成SOAP请求) -->发送到Web服务器-->交给WebService请求处理器-->处 ...
- 基于Hash的消息认证码HMAC简介及在OpenSSL中使用举例
HMAC(Hash-based Message Authentication Code):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个 ...
- 密钥生成并配置_基于密钥的SSH认证流程
" 基于密钥的SSH认证流程." 01 - 基于密钥的SSH认证流程 Client生成一对密钥,将公钥存放于Server上,私钥自己留着. Server收到Client的登录请求, ...
- linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建
linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...
- 利用OpenSSH实现基于秘钥的认证
利用OpenSSH实现基于秘钥的认证 SSH协议介绍: SSH是Secure Shell的缩写,意思是安全的shell 目前版本有 ssh v1和ssh v2:在目前工作中 ...
最新文章
- 合并果子(贪心,优先队列)
- 【Jupyter Notebook】启动命令行(写进.sh文件直接调用shell)
- 收藏:DPDK内存基本概念
- 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
- python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解
- 论 BUG调试与(程序猿)初学者
- 动手学servlet(六) 过滤器和监听器
- LeetCode刷题开源手册
- 2019帝豪gs装软件_继悬浮式车顶之后,2019年这些设计将会成为主流!
- JavaScript 误区
- springboot里面的porm配置问题
- Java HttpServlet 详解
- 股票实战专题:6000102019一二月分析收盘价绘图
- 【mongo系列】 六、mongo分片集群
- 计算机时间怎么改24小时模式,怎么修改电脑的时间为24小时制啊?
- 图片不变形,按照等比例缩小或扩大显示
- 互联网营销的技巧方法和套路!
- 中文版sublime text3的下载网址和注意方法
- 更正:解决报告无法下载的问题-跟国家虚拟仿真实验平台对接上传附件接口遇到的问题
- 金蝶Apusic应用服务器