使用soaphead方法可以在webservice的請求中增加頭部信息,當(dāng)有人調(diào)用我們的webservice時(shí),可以通過查詢這個(gè)請求的頭部信息并驗(yàn)證來防止該軟件以外的程序調(diào)用webservice
一、服務(wù)端部分
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
//請注意此命名空間必須有別于代理動(dòng)態(tài)連接庫上的命名空間。
//否則,將產(chǎn)生諸如多處定義AuthHeader這樣的錯(cuò)誤。
namespace SoapHeadersCS
{
//由SoapHeader擴(kuò)展而來的AuthHeader類
public class AuthHeaderCS : SoapHeader
{
public string Username;
public string Password;
}
//[WebService(Description="用于演示SOAP頭文件用法的簡單示例")]
public class HeaderService
{
public AuthHeaderCS sHeader;
[WebMethod(Description = "此方法要求有調(diào)用方自定義設(shè)置的soap頭文件")]
[SoapHeader("sHeader")]
public string SecureMethod()
{
if (sHeader == null)
return "ERROR:你不是VIP用戶!";
string usr = sHeader.Username;
string pwd = sHeader.Password;
if (AuthenticateUser(usr, pwd))
{
return "成功:" + usr + "," + pwd;
}
else
{
return "錯(cuò)誤:未能通過身份驗(yàn)證";
}
}
private bool AuthenticateUser(string usr, string pwd)
{
if ((usr != null) (pwd != null))
{
return true;
}
return false;
}
}
}
二、客戶端部分加上驗(yàn)證的請求
WebService webservice = new WebService();
AuthHeaderCS auth = new AuthHeaderCS();
auth.Username = "vip";
auth.Password = "vippw";
webservice.AuthHeaderCSValue = auth;
textBox1.Text = webservice.SecureMethod();
以上就是基于soaphead的webservice安全機(jī)制全部內(nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- ASP.NET使用WebService實(shí)現(xiàn)天氣預(yù)報(bào)功能
- jQuery調(diào)用Webservice傳遞json數(shù)組的方法
- 甩掉ashx和asmx使用jQuery.ajaxWebService請求WebMethod簡練處理Ajax
- 使用jQuery Ajax 請求webservice來實(shí)現(xiàn)更簡練的Ajax
- C# WebService發(fā)布以及IIS發(fā)布
- jQuery 調(diào)用WebService 實(shí)例講解
- WebService的相關(guān)概念