webService访问加密-Soapheader
具体实现步骤:
1、 定义一个 soapheader派生类用来实现 WebService访问权限验证
- <span style="font-size:10px;">using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- /// <summary>
- ///MySoapHeader 的摘要说明
- /// </summary>
- public class MySoapHeader:System .Web .Services .Protocols .SoapHeader
- {
- private string _uname = string.Empty;//webservice访问用户名
- public string Uname
- {
- get { return _uname; }
- set { _uname = value; }
- }
- private string _password = string.Empty;//webservice访问密码
- public string Password
- {
- get { return _password; }
- set { _password = value; }
- }
- public MySoapHeader()
- {
- //
- //TODO: 在此处添加构造函数逻辑
- //
- }
- public MySoapHeader(string uname, string upass)
- {
- init(uname, upass);
- }
- private void init(string uname, string upass)
- {
- this._password = upass;
- this._uname = uname;
- }
- //验证用户是否有权访问内部接口
- private bool isValid(string uname, string upass, out string msg)
- {
- msg = "";
- if (uname == "admin" && upass =="admin")
- {
- return true;
- }
- else {
- msg = "对不起!您无权调用此WebService!";
- return false;
- }
- }
- //验证用户是否有权访问外部接口
- public bool isValid(out string msg)
- {
- return isValid(_uname, _password,out msg);
- }
- }
- </span>
2、 定义有需要验证的 WebService。
- <span style="font-size:10px;">using System;
- using System.Collections;
- using System.Linq;
- using System.Web;
- using System.Web.Services;
- using System.Web.Services.Protocols;
- using System.Xml.Linq;
- /// <summary>
- ///test 的摘要说明
- /// </summary>
- [WebService(Namespace = "http://tempuri.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
- // [System.Web.Script.Services.ScriptService]
- public class test : System.Web.Services.WebService {
- public test () {
- //如果使用设计的组件,请取消注释以下行
- //InitializeComponent();
- }
- public MySoapHeader myheader = new MySoapHeader();
- [WebMethod]
- public string HelloWorld() {//普通WebService,无需验证
- return "Hello World";
- }
- [SoapHeader("myheader")]//加入此头部的WebService需要验证,不加则为普通WebService无需验证
- [WebMethod(Description = "根据产品编号查询产品的价格", EnableSession = true)]
- public string GetProductPrice2(string ProductId)
- {
- string msg = "";
- //验证是否有权访问
- if (!myheader.isValid(out msg))
- {
- return -1;//返回错误信息
- }
- return ProductId;
- }
- }
- </span>
3、 客户端调用方法
引用 WebService定义 WebService名称为 :Myservice
- <span style="font-size:10px;">using System;
- using System.Configuration;
- using System.Data;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- myservice.test te = new abc.test();
- myservice.MySoapHeader myhead = new MySoapHeader();
- myhead.Uname = "admin";//输入WebService访问用户名
- myhead.Password = "admin";//输入WebService访问密码
- te.MySoapHeaderValue = myhead;//
- string test = te.GetProductPrice2("ok!");
- Response.Write(aa);//用户名、密码输入正确则输出ok 否则输出 错误msg
- }
- } </span>
也推荐另外一个cookie的方式http://blog.csdn.net/dz45693/article/details/6151170
webService访问加密-Soapheader的更多相关文章
- webService访问加密
WebService加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用. 具体实现步骤: 1. 定义一个 soaph ...
- WebService安全加密
众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用.那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括 ...
- WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]
摘 自: http://blog.sina.com.cn/s/blog_72b7a82d0100yyp8.html WebService基于SoapHeader实现安全认证[webservice][. ...
- WebService访问oracle数据库本地调试
WebService访问oracle数据库本地调试-一步一个坑 上篇文章提到我们额数据库挂了,重装了数据库,然后呢我需要在本地调试WebService,看看那些数据结构缺失,迁移到新数据库中去.踩坑之 ...
- webservice安全性之 SoapHeader自定义身份验证
相信很多开发者都用过WebService来实现程序的面向服务,本文主要介绍WebService的身份识别实现方式,当然本文会提供一个不是很完善的例子,权当抱砖引玉了. 首先我们来介绍webservic ...
- 指定WebService访问的语言
场景: 在访问ERP发布的WebService时,由于其指定了访问语言,导致不指定访问语言时,会有部分数据丢失. 解决: 通过WSDL工具生成代理类后,再次对其中的GetWebRequest方法进行重 ...
- Delphi调用WebService(通过SoapHeader认证)经验总结
项目(Delphi开发)需要调用另一个系统的WebService.走了不少弯路,现记录总结一下经验.以下是WebService要求: 1.WebService概述 营销Webservice接口采用Ap ...
- webservice访问的几种方式
今天在对接的客户用到了webservice,最终采用wsimport生成本地代理方式以SDK的形式对接,但是想的完整的总结一下ws的几种调用方式. 发布服务的IP地址是:192.168.125.116 ...
- C#访问加密的SQLite数据库
前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLi ...
随机推荐
- Linux 中如何卸载已安装的软件(转载)
Linux 中如何卸载已安装的软件. Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实 ...
- Struts2工作原理
Struts2工作原理 Struts2请求响应流程: 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.Acti ...
- CF149D. Coloring Brackets[区间DP !]
题意:给括号匹配涂色,红色蓝色或不涂,要求见原题,求方案数 区间DP 用栈先处理匹配 f[i][j][0/1/2][0/1/2]表示i到ji涂色和j涂色的方案数 l和r匹配的话,转移到(l+1,r-1 ...
- 嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
首先贴上代码: 字符设备驱动代码: /** *file name: led.c */#include <linux/sched.h> #include <linux/signal.h ...
- 让IE10等支持classList2.0(转)
chrome24+, firesfox26+起支持classList2.0,即让它同时添加或删除多个类名, toggle方法支持第2个参数,用于强制添加或删除 var div = document.c ...
- 最大M子段和 V2
51nod1053 这题还是我们熟悉的M子段和,只不过N,M<=50000. 这题似乎是一个堆+链表的题目啊 开始考虑把所有正数负数锁在一起. 比如: 1 2 3 -1 –2 -3 666 缩成 ...
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
概要 前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...
- AlwaysOn--Backup Preference
AlwaysOn group的一个新特性是允许在secondary replica进行backup,将backup的负载从primary replica上移除去. 并且提供了Backup prefer ...
- 【深圳】OSC源创会第44期 开始报名
时间:2016-03-19 14:00 地点: 深圳 南山区海德三道天利中央商务广场B座负一楼(意启创业) 费用:50元/人(现场交),女士.50积分的账号.开源软件作者.学生免费 (用于准备茶歇小食 ...
- .clear 万能清除浮动
html body div.clear, html body span.clear { background: none; border: 0; clear: both; display: block ...