加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService soapheader加密

发布时间:2020-12-17 01:21:18 所属栏目:安全 来源:网络整理
导读:WebService soapheader加密 WebService head 加密,可以对 WebService 设置访问用户名和密码,增强 WebService 的安全性 使 WebService 只能被授权用户使用。 具体实现步骤: 1、 定义一个 soapheader 派生类用来实现 WebService 访问权限验证 using System;

WebService soapheader加密

WebService head 加密,可以对 WebService 设置访问用户名和密码,增强 WebService 的安全性 使 WebService 只能被授权用户使用。

具体实现步骤:

1、 定义一个 soapheader 派生类用来实现 WebService 访问权限验证

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" &amp;&amp; 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;
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;
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
??? }
}

?

http://blog.sina.com.cn/s/blog_5f998b5d0100gc62.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读