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

WebService基于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; /// <summary> ///自定义的SoapHeader /// </summary> public class MySoapHeader : System.Web.Services.Protocols.SoapHeader { private string userName = string.Empty; private string passWord = string.Empty; /// <summary> /// 构造函数 /// </summary> public MySoapHeader() { } /// <summary> /// 构造函数 /// </summary> /// <param name="userName">用户名</param> /// <param name="passWord">密码</param> public MySoapHeader(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.Services; /// <summary> ///WebService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { //声明Soap头实例 public MySoapHeader myHeader = new MySoapHeader(); [System.Web.Services.Protocols.SoapHeader("myHeader")] [WebMethod] public string HelloWord() { //可以通过存储在数据库中的用户与密码来验证 if (myHeader.UserName.Equals("houlei") & myHeader.PassWord.Equals("houlei")) { return "调用服务成功!"; } else { return "对不起,您没有权限调用此服务!"; } } }


 

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

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace App { class Program { static void Main(string[] args) { localhost.WebService service = new localhost.WebService(); //没有设置SoapHeader的服务调用 Console.WriteLine("没有设置SoapHeader:" + service.HelloWord()); Console.WriteLine(); //将用户名与密码存入SoapHeader; localhost.MySoapHeader header = new localhost.MySoapHeader(); header.UserName = "houlei"; header.PassWord = "houlei"; service.MySoapHeaderValue = header; //设置SoapHeader的服务调用 Console.WriteLine("设置SoapHeader:" + service.HelloWord()); Console.Read(); } } }


 

4.运行应用程序,查看运行结果。

再看一下直接通过浏览器的调用结果。

点击HelloWord调用Web服务,结果如下:

点击“调用”按钮,得到从服务器返回调用结果。

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

 

原文地址:http://hi.baidu.com/guafuli/blog/item/e4f017cc779c7527f9dc6122.html


转载于:https://www.cnblogs.com/bdstjk/archive/2011/11/24/2519877.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 常见的 30 个误区与细节!

1 在Java中&#xff0c;没有goto语句。因为大量使用goto语句会降低程序的可读性和可维护性&#xff0c;所以Java语言取消了goto的使用。同时&#xff0c;为了避免程序员自行使用goto所带来的混乱&#xff0c;Java语言仍将goto定义为一个关键字&#xff0c;但是没有定义任何语…

信息技术上册教案了解计算机,信息技术上册全册教案

信息技术上册全册教案[课时]:1节课[教学内容]:认识媒体;认识多媒体[教学目标]:1、了解媒体的概念和分类&#xff0c;理解多媒体的内涵和特征。2、能从日常的生活和学习中感受各种媒体及其作用3、培养学生对媒体、多媒体的喜爱&#xff0c;引发他们继续学习的热情。[教学重、难点…

轻量级NuGet—BaGet

1. 介绍BaGet是一个轻量级的包管理服务。有些时候公司或者个人不希望某一些包进行公开&#xff0c;那么就需要使用私有的包管理服务程序&#xff0c;该服务是用.netcore进行编写的(感谢开发者为.NET社区做出的贡献)Github&#xff1a;https://github.com/loic-sharma/BaGet官网…

为什么这个SQL Server DBA学习PowerShell--SQL任务

我开始学习PowerShell&#xff0c;是因为我在寻找一种快速和高效的方式收集有关我的SQL Servers的信息和更好地管理我的服务器工作负载的方式。我以为&#xff0c;我正在学习是另一门新的脚本语言&#xff0c;它能帮我做到前面提到的设想。实际上&#xff0c;我发现学习 PowerS…

30张地图看懂世界格局,用大数据说话

摘要&#xff1a;世界那么大&#xff0c;要了解的数据那么复杂&#xff0c;下面知识探索小编帮您总结一下关于世界的数据。1、 世界人口聚居地红色越深人口密度越大&#xff1b;灰色代表无人地带。2、全球各国平均智商分布图颜色越浅智商越高3、全球冰川融化后的世界地图4、全世…

.NET Core3.1 Dotnetty实战教程

Dotnetty实战系列视频由于在.net的环境当中对dotnetty相关资料相对较少&#xff0c;所以这里主要分享一个dotnetty使用教程希望能帮助到正在使用这套框架的开发者们。虽然这套框架已微软官方已经不在维护&#xff0c;但是这套框架里的设计是相当不错的通过阅读源码能学习到很多…

计算机u打字,win7电脑打字打不出来怎么办

在windows电脑当中&#xff0c;必不可少的一个操作就是打字了&#xff0c;输入代码需要打字&#xff0c;网页中搜索也需要打字&#xff0c;网络聊天也需要打字&#xff0c;不过最近有位win7系统用户&#xff0c;在电脑中打开浏览器&#xff0c;输入想要找的资料的时候&#xff…

我用Python爬取了14年所有的福彩3D信息,彩民们,只能帮你们到这了

作者|丁彦军来源|恋习Python前两天&#xff0c;在网上看到一个有意思的问题&#xff1a;彩票预测靠谱么&#xff1f;为什么还有那么多的人相信彩票预测&#xff1f;暂且不说&#xff0c;彩票预测是否靠谱&#xff1f;彩票预测也分人而异&#xff0c;江湖上骗术很多&#xff0c;…

C#: 8.0 和 9.0 常用新特性

在《带你了解C#每个版本新特性》 一文中介绍了&#xff0c;C# 1.0 到 7.0 的不同特性&#xff0c;本文接着介绍在 8.0 和 9.0 中的一些常用新特性。C# 8.0在 dotNET Core 3.1 及以上版本中就可以使用 C# 8 的语法&#xff0c;下面是 C# 8 中我认为比较常用的一些新功能。默认接…

选股公式 成功率测试 软件,通达信股票软件选股公式,99%的成功率,你还等什么?...

工具&#xff1a;通达信金融终端使用方法&#xff1a;1、通达信软件界面2、点击“功能”“公式系统”“公式管理器”“条件选股公式”“其他类型”&#xff0c;点击新建3、使用选股公式&#xff0c;点击ctrlt&#xff0c;弹出条件选股窗口4、选中公式&#xff0c;点击加入条件&…

小米 华为都要造车?.NET高薪潮来了!(附招聘链接)

近期网络沸沸扬扬的小米、华为、苹果 都要造车&#xff0c;其实百度、阿里和腾讯 也都入局了。互联网大佬们纷纷开始造车&#xff0c;跟我们小小程序员有关系吗&#xff1f;有&#xff01;高薪机会来了&#xff0c;尤其是WPF&#xff01;且听下文分解。物联网终极形态“互联网”…

聚类算法学习指南(二)

http://hi.baidu.com/catfool/blog/item/c06bec3931a0efcad4622524.html 聚类算法学习指南&#xff08;二&#xff09;2009-05-06 20:49下图图 3-1 聚类方法的分类示意图3.1 传统聚类算法3.1.1 层次方法层次法对给定的数据对象集合进行层次似的分解。按层次分解的形成方式&…

.NetCore跨域

描述浏览器安全策略上的安全限制可以有效阻止Ajax向另外的一个域server发起请求&#xff0c;这就是著名的同源策略&#xff0c;如何突破这种限制&#xff0c;可以使用CORS。public static void AddCommon(this IServiceCollection services){services.AddCors(options >{opt…

山东大学计算机非全上课,山东大学非全日制研究生上课方式

【导读】山东大学非全日制研究生上课方式。如今非全日制研究生考试已经与全日制一样&#xff0c;连考试内容和时间也都是一样。许多想要报考山东大学非全日制研究生的人员开始担心&#xff0c;非全日制研究生和全日制研究生的考试样了&#xff0c;那么上课方式会不会也是一样的…

【转载】可复用的FS

有很多朋友要求给出一个应用ESFramework的Demo&#xff0c;在前面介绍ESFramework支持的4层架构中&#xff08;回顾&#xff09;&#xff0c;有AS、FS、IRAS&#xff0c;其中FS的功能需求最简单&#xff0c;所以本文就给出一个FS实现示例。 FS主要用于管理功能插件&…

Git、GitHub、GitLab三者之间的联系以及区别

在讲区别以及联系之前先简要的介绍一下&#xff0c;这三者都是什么(本篇文章适合刚入门的新手&#xff0c;大佬请出门左转)1.什么是 Git?Git 是一个版本控制系统。版本控制是一种用于记录一个或多个文件内容变化&#xff0c;方便我们查阅特定版本修订情况的系统。以前在没有使…

zen服务器芯片,服务器版Zen处理器简直大杀器:32核64线程,8通道DDR4内存

拼 命 加 载 中 ...在这次的E3展会上&#xff0c;AMD除了公布RX 470/460显卡之外&#xff0c;还跟雷蛇发了一款支持VR的背包PC&#xff0c;使用了RX480显卡&#xff0c;处理器则是AMD的Zen&#xff0c;8核16线程&#xff0c;这还只是桌面版的&#xff0c;要知道Zen处理器最重要…

【赠书活动】优雅免费领书指南

快扶朕起来&#xff0c;我还要送书&#xff01;在上一期的赠书活动上结束后。超模君就吩咐小树包装好书籍&#xff0c;寄给获奖的模友们&#xff01;很多模友收到书籍都表示很不错&#xff0c;期望能再来一次赠书活动。这不&#xff0c;朕又想&#xff0c;超模君又想送书了&…

利用11行Python代码,盗取了室友的U盘,内容十分刺激!

作者&#xff1a;Python新世界 來源&#xff1a;简书https://www.jianshu.com/p/3d7b2d9fe679序言那个猥琐的家伙整天把个U盘藏着当宝&#xff0c;都睡觉了就拿出来插到电脑上。我决定想个办法看他U盘里都藏了什么&#xff0c;直接去抢U盘是不可能的&#xff0c;骗也是…

鸡肋还是革新——Blazor进WinForm

winform是一老技术&#xff0c;感觉都有点掉牙了&#xff08;我近20年前就是从winform开始接触.net的&#xff09;&#xff1b;blazor&#xff0c;是微软技术圈里的新宠&#xff0c;正在被悉心照顾。当这一老一少的技术碰撞后&#xff0c;会有什么火花&#xff1f;.net v6.0.0-…