通過SoapHeader來增強Web Service的安全性
通過SoapHeader來增強Web Service的安全性
1.Web Service實現步驟
首先引入名稱空間
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols; //對soap Head引用新增的名稱空間
(1)定義自己的SoapHeader派生類。
public class MyHeader : System.Web.Services.Protocols.SoapHeader
{
private string _UserID = string.Empty;
private string _PassWord = string.Empty;
///
/// 建構函式
///
public MyHeader()
{
}
///
/// 建構函式
///
/// 使用者ID
/// 加密後的密碼
public MyHeader(string nUserID, string nPassWord)
{
Initial(nUserID, nPassWord);
}
#region 屬性
///
/// 使用者名稱
///
public string UserID
{
get { return _UserID; }
set { _UserID = value; }
}
///
/// 加密後的密碼
///
public string PassWord
{
get { return _PassWord; }
set { _PassWord = value; }
}
#endregion
#region 方法
///
/// 初始化
///
/// 使用者ID
/// 加密後的密碼
public void Initial(string nUserID, string nPassWord)
{
UserID = nUserID;
PassWord = nPassWord;
}
///
/// 使用者名稱密碼是否正確
///
/// 使用者ID
/// 加密後的密碼
/// 返回的錯誤資訊
///
public bool IsValid(string nUserID, string nPassWord, out string nMsg)
{
nMsg = "";
try
{
//判斷使用者名稱密碼是否正確
if (nUserID == "admin" && nPassWord == "admin")
{
return true;
}
else
{
nMsg = "對不起,你無權呼叫此Web服務,可能有如下原因:/n 1.您的帳號被管理員禁用。/n 2.您的帳號密碼不正確";
return false;
}
}
catch
{
nMsg = "對不起,你無權呼叫此Web服務,可能有如下原因:/n 1.您的帳號被管理員禁用。/n 2.您的帳號密碼不正確";
return false;
}
}
///
/// 使用者名稱密碼是否正確
///
///
public bool IsValid(out string nMsg)
{
return IsValid(_UserID, _PassWord, out nMsg);
}
#endregion
}
(2)新增基於SoapHeader驗證的Web Service介面方法:
///
/// myService 的摘要說明
///
//[WebService(Namespace="http://MyServer/MyWebServices/")]
public class myService : System.Web.Services.WebService
{
///
/// Soap頭例項
///
public MyHeader myHeader = new MyHeader(); //例項化SoapHead
public myService()
{
//CodeGenerated: 自動生成的程式碼,該呼叫是 ASP.NET Web 服務設計器所必需的
InitializeComponent();
}
#region 元件設計器生成的程式碼
//Web 服務設計器所必需的
private IContainer components = null;
///
/// 設計器支援所需的方法 - 不要使用程式碼編輯器修改
/// 此方法的內容。
///
private void InitializeComponent()
{
}
///
/// 清理所有正在使用的資源
///
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// WEB 服務示例
// HelloWorld() 示例服務返回字串 Hello World
// 若要生成,請取消註釋下列行,然後儲存並生成專案
// 若要測試此 Web 服務,請按 F5 鍵
///
/// 正常呼叫的方法
///
///
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
///
/// 需要驗證的方法,新增SoapHeader標識
///
///
///
[SoapHeader("myHeader")]
[WebMethod(Description = "HelloWord", EnableSession = true)]
public string HelloWorld2(string contents)
{
string msg = "";
//驗證是否有權訪問
if (!myHeader.IsValid(out msg))
return msg;
return "Hello World:" + contents;
}
}
2.客戶端呼叫具有SoapHeader的Web Service
//建立myService物件
StudySoapHead.myService service = new StudySoapHead.myService();
//建立soap頭物件
StudySoapHead.MyHeader header=new StudySoapHead.MyHeader();
//設定soap頭變數
header.PassWord = "admin";
header.UserID = "admin";
service.myHeader = header;
//呼叫web 方法
Console.WriteLine(service.HelloWorld());
Console.WriteLine(service.HelloWorld2("Valid request!"));
Console.Read();
通過SoapHeader對使用者口令進行驗證,只有授權的使用者才可以使用該介面。確保了訪問介面使用者的安全性。
轉自:http://blog.csdn.net/dongxinxi/article/details/6305656#comments
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-766626/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過vftps和虛擬帳號增強ftp的安全性FTP
- 增強邊緣計算的安全性
- 推薦一種通過刷leetcode來增強技術功底的方法LeetCode
- 透過資料和技術增強住宅的安全性方法有哪些?
- 在 Go 語言中增強 Cookie 的安全性GoCookie
- Fiori 應用通過 Adaptation Project 的增強方式分享APTProject
- 使用Cilium增強Istio—通過Socket感知BPF程式
- [Android L]SEAndroid增強Androd安全性背景概要及帶來的影響Android
- 使用Oracle外部身份認證增強安全性Oracle
- 通過配置web.config使WCF向外提供HTTPS的Restful ServiceWebHTTPREST
- ASP.NET Web Service 標準SOAP開發案例程式碼(自定義驗證安全頭SOAPHeader)ASP.NETWebHeader
- DigiCert和Thales如何增強Hyperledger的網路安全性
- 什麼是web service?- SOAP Web Service & Restful Web ServiceWebREST
- WinCE資料通訊之Web Service篇Web
- WEB的QTP原型框架PAFAWEB(增強型SAFFRON)WebQT原型框架
- 建立一個系統的Service,能通過ServiceManager.getService取得service
- 【Azure 應用服務】App Service 通過配置web.config來新增請求返回的響應頭(Response Header)APPWebHeader
- 通過自定義fact增強MCollective推送更新後設資料的靈活性薦
- 用Apache的CGI封裝器來加強安全性(轉)Apache封裝
- 增強web伺服器安全的方法有哪些Web伺服器
- AIX 上實用openssh增強安全性_簡單配置方法AI
- .NET 6學習筆記(2)——通過Worker Service建立Windows Service筆記Windows
- ASP.NET Web API通過ActionFilter來實現快取ASP.NETWebAPIFilter快取
- 通過Azure File Service搭建基於iscsi的共享盤
- Web Service 的工作原理Web
- k8s通過Service訪問PodK8S
- 在ORACLE中利用角色增強應用系統安全性(轉)Oracle
- 《網路安全體系結構》一1.8不要通過隱匿來提高系統的安全性
- 用歸納偏置來增強你的模型效能模型
- web 開發的安全性?Web
- xml web serviceXMLWeb
- Web Service 教程Web
- openGauss-外來鍵鎖增強
- 通過IO模型帶來的思考模型
- 部署個SSH蜜罐玩玩,既能增強安全性,又能當電子蛐蛐
- ASP.NET Web API 通過Authentication特性來實現身份認證ASP.NETWebAPI
- Android中的Web ServiceAndroidWeb
- 相應 ADAM 令牌 資料聚合器.增強了 Oracle 網路的安全性。Oracle