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(""))
{
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]的更多相关文章
- WebService基于SoapHeader实现安全认证
本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使 ...
- WebService基于SoapHeader实现安全认证(一)
本文转载:http://www.cnblogs.com/houleixx/archive/2009/08/22/webservice-soapheader-security.html WebServi ...
- WebService基于SoapHeader实现安全认证(二)
支持通过Http请求方法调用webservice,同时支持SoapHeader验证. using Globalegrow.Common; using Globalegrow.Model; using ...
- WebService基于soapheader的身份验证
用WebService开发接口十分方便.但接口提供的数据不应是对所有人可见的,我们来利用SoapHeader写一个简单的身份验证Demo 目录 创建WebService项目(带SoapHeader) ...
- iOS开发笔记 基于wsdl2objc调用asp.net WebService
1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...
- Web Server 在iis上部署webservice基于oracle
在iis上部署webservice基于oracle 常见错误及解决方案: 原因: 先安装.netframework后安装iis造成的: 解决方案: 1.C:\Windows\Microsoft.NET ...
- [置顶]
WebService学习总结(1)——WebService相关概念
一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...
- SharePoint 2013 配置基于AD的Form认证
前 言 配置SharePoint 2013基于AD的Form认证,主要有三步: 1. 修改管理中心的web.config: 2. 修改STS Application的web.config: 3. 修改 ...
- sharepoint:基于AD的FORM认证
//来源:http://www.cnblogs.com/jindahao/archive/2012/05/07/2487351.html 需求: 1. 认证要基于AD 2. 登入方式要页面的方式(fo ...
随机推荐
- Delphi使程序的窗口出现在最前面并激活
procedure setAppFront(); //使程序的窗口出现在最前面并激活 var pt, OldPt, NewPt: TPoint; begin //判断Application是否最小化, ...
- 关于rem的一点总结【原创】
关于rem的一点总结 最近在写一个关于小说阅读的webApp,由于没有借用任何框架,所以很多底层的内容都需要自己去解决,幸好的是这次只是关于移动端的内容,还不至于去向着jquery的方向码代码.言归正 ...
- [水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API
问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合 ...
- Windows服务器学习篇:服务器连接与退出
此文是我早期在公司内部发布的一篇给予新入职程序员基础技术培训的文章,非常基础简单,现拿出来给大家分享.当然,已工作人士可直接忽略... 一.Windows服务器连接 1. 在桌面菜单中的“运行”里,输 ...
- 微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—下篇
在上一篇文章中, 我介绍了企业库Cryptographer模块的一些重要类,同时介绍了企业库Cryptographer模块为我们提供的扩展接口,今天我就要根据这些 接口来进行扩展开发,实现2个加密解密 ...
- 【ASP.NET】IHttpHandler和IHttpModule
上篇文章我们主要讲了HttpApplicatiion管道事件,那么我么如何处理这些管道事件呢,以及请求在ASP.NET是如何执行的呢,我们来了解一下IHttpHandler和IHttpModule 引 ...
- 洛谷——P1927 防护伞
P1927 防护伞 题目描述 据说 2012 的灾难和太阳黑子的爆发有关.于是地球防卫小队决定制造一个特殊防护 伞,挡住太阳黑子爆发的区域,减少其对地球的影响.由于太阳相对于地球来说实在是太 大了,我 ...
- 洛谷——P2082 区间覆盖(加强版)
P2082 区间覆盖(加强版) 题目描述 已知有N个区间,每个区间的范围是[si,ti],请求出区间覆盖后的总长. 输入输出格式 输入格式: N s1 t1 s2 t2 …… sn tn 输出格式: ...
- 【IO】同步、异步、阻塞、非阻塞的理解
最近一直在看跟IO模型有关的内容,感觉差不多理解了,于是开始写这一篇总结博客.针对的操作系统为UNIX/LINUX,大致的体系结构如上图. 操作系统中的客体主要包括了:文件,Socket和进程,本文主 ...
- Grunt Gulp Browserify Webpack
Grunt 是相比后面几个更早的项目,他依赖于各种插件的配置.这是一个很好的解决方案,但是请相信我,你不会想看到一个 300 行的 Gruntfile Gulp 提供了一个不一样的解决方案,而不是依赖 ...