更新時間:2020-09-23 17:32:06 來源:動力節(jié)點(diǎn) 瀏覽1554次
Web Service head加密,可以對 Web Service設(shè)置訪問用戶名和密碼,增強(qiáng) Web Service的安全性,使 Web Service只能被授權(quán)用戶使用。 本文我們一起來看看如何實(shí)現(xiàn)Web Service訪問加密設(shè)置。
Web Service訪問加密設(shè)置具體實(shí)現(xiàn)步驟如下:
1、 定義一個 soapheader派生類用來實(shí)現(xiàn) WebService訪問權(quán)限驗(yàn)證
[csharp] view plaincopy
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;
///
///MySoapHeader 的摘要說明
///
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: 在此處添加構(gòu)造函數(shù)邏輯
//
}
public MySoapHeader(string uname, string upass)
{
init(uname, upass);
}
private void init(string uname, string upass)
{
this._password = upass;
this._uname = uname;
}
//驗(yàn)證用戶是否有權(quán)訪問內(nèi)部接口
private bool isValid(string uname, string upass, out string msg)
{
msg = "";
if (uname == "admin" && upass =="admin")
{
return true;
}
else {
msg = "對不起!您無權(quán)調(diào)用此WebService!";
return false;
}
}
//驗(yàn)證用戶是否有權(quán)訪問外部接口
public bool isValid(out string msg)
{
return isValid(_uname, _password,out msg);
}
}
2、 定義有需要驗(yàn)證的 Web Service。
[csharp] view plaincopy
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
///
///test 的摘要說明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。
// [System.Web.Script.Services.ScriptService]
public class test : System.Web.Services.WebService {
public test () {
//如果使用設(shè)計(jì)的組件,請取消注釋以下行
//InitializeComponent();
}
public MySoapHeader myheader = new MySoapHeader();
[WebMethod]
public string HelloWorld() {//普通WebService,無需驗(yàn)證
return "Hello World";
}
[SoapHeader("myheader")]//加入此頭部的WebService需要驗(yàn)證,不加則為普通WebService無需驗(yàn)證
[WebMethod(Description = "根據(jù)產(chǎn)品編號查詢產(chǎn)品的價(jià)格", EnableSession = true)]
public string GetProductPrice2(string ProductId)
{
string msg = "";
//驗(yàn)證是否有權(quán)訪問
if (!myheader.isValid(out msg))
{
return -1;//返回錯誤信息
}
return ProductId;
}
}
3、 客戶端調(diào)用方法
引用 WebService定義 WebService名稱為 :Myservice
[csharp] view plaincopy
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
}
}
倘若完成了以上三個步驟,就能完成對Web Service訪問加密設(shè)置了。掌握如何用Web Service訪問加密設(shè)置是極其必要的,隨著互聯(lián)網(wǎng)的飛速發(fā)展,人們的個人信息也越來越數(shù)據(jù)化,這就需要保證這些個人數(shù)據(jù)的安全性,設(shè)置訪問權(quán)限。在本站的Java教程里還有更多的涉及程序安全的實(shí)例,我們可以自己下載學(xué)習(xí),提升自我。
初級 202925
初級 203221
初級 202629
初級 203743