webService访问加密-Soapheader

简介: 原文:webService访问加密-Soapheader转载:http://blog.csdn.net/wanderocn/article/details/6584098 WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。
原文: webService访问加密-Soapheader

转载:http://blog.csdn.net/wanderocn/article/details/6584098

WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。
具体实现步骤:
1、 定义一个 soapheader派生类用来实现 WebService访问权限验证

 

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);  
    }  
}

2、 定义有需要验证的 WebService。

 

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;  
    }  
 }

3、 客户端调用方法
引用 WebService定义 WebService名称为 :Myservice。

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  
    }
目录
相关文章
|
5月前
|
安全 数据安全/隐私保护
使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信
使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信
46 0
|
9月前
|
JSON 前端开发 安全
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
181 0
|
JSON 网络安全 数据安全/隐私保护
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
18 0
|
2月前
|
存储 安全 算法
【接口加密】Java中的接口加密实践
【接口加密】Java中的接口加密实践
|
2月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
|
Java 数据安全/隐私保护
java实现加密电话号码,有具体的加密流程注释
java实现加密电话号码,有具体的加密流程注释
20 0
|
3月前
|
存储 算法 安全
3分钟快速了解使用Java进行对称加密
对称加密算法有很多种,其中较为知名的有AES(高级加密标准)、DES(数据加密标准)以及3DES(三重数据加密算法)等。这些算法在不同的场景下有着广泛的应用,为保障数据安全提供了有力支持。
60 0
|
3月前
|
编解码 算法 安全
怎么Java进行MD5摘要加密?
MD5(Message-Digest Algorithm 5)是一种常用的摘要算法,用于将任意长度的数据转换为固定长度的摘要值(通常为128位)。MD5算法的原理是将原始数据分成若干个固定长度的块,对每个块进行一系列的数据处理,最终得到一个128位的摘要值。这个摘要值可以作为数据的唯一标识,用于验证数据的完整性和真实性。
36 1