兩種方法實(shí)現(xiàn)Web Service身份驗(yàn)證
Web Service身份驗(yàn)證解決方案一:通過(guò)通過(guò)SOAP Header身份驗(yàn)證。
1.我們實(shí)現(xiàn)一個(gè)用于身份驗(yàn)證的類(lèi),文件名MySoapHeader.cs
MySoapHeader類(lèi)繼承自System.Web.Services.Protocols.SoapHeader。且定義了兩個(gè)成員變量,UserName和PassWord,還定義了一個(gè)用戶(hù)認(rèn)證的函數(shù)ValideUser。它提供了對(duì)UserName和PassWord檢查的功能
- 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;
- using System.Web.Services;
- using System.Web.Services.Protocols;
- ///
- ///MySoapHeader 的摘要說(shuō)明
- ///
- public class MySoapHeader:SoapHeader
- {
- public MySoapHeader()
- {
- //
- //TODO: 在此處添加構(gòu)造函數(shù)邏輯
- //
- }
- public string UserName;
- public string PassWord;
- public bool ValideUser(string in_UserName, string in_PassWord)
- {
- if ((in_UserName == "zxq") && (in_PassWord == "123456"))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
2.下面我們創(chuàng)建WebService.asmx WebService.cs代碼如下:
- using System;
- using System.Collections;
- using System.Web;
- using System.Web.Services;
- using System.Web.Services.Protocols;
- ///
- ///WebService 的摘要說(shuō)明
- ///
- [WebService(Namespace = "http://tempuri.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- public class WebService : System.Web.Services.WebService
- {
- public WebService()
- {
- //如果使用設(shè)計(jì)的組件,請(qǐng)取消注釋以下行
- //InitializeComponent();
- }
- public MySoapHeader header; ////定義用戶(hù)身份驗(yàn)證類(lèi)變量header
- [WebMethod(Description = "用戶(hù)驗(yàn)證測(cè)試")]
- [System.Web.Services.Protocols.SoapHeader("header")]//用戶(hù)身份驗(yàn)證的soap頭
- public string HelloWorld(string contents)
- {
- //驗(yàn)證是否有權(quán)訪問(wèn)
- if (header.ValideUser(header.UserName, header.PassWord))
- {
- return contents + "執(zhí)行了";
- }
- else
- {
- return "您沒(méi)有權(quán)限訪問(wèn)";
- }
- }
- }
3.客戶(hù)端 創(chuàng)建個(gè)Default.aspx
- Default.aspx .cs代碼
- 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)
- {
- com.cn1yw.WebService test = new com.cn1yw.WebService();//web引用(改成您自己的)
- com.cn1yw.MySoapHeader Header = new com.cn1yw.MySoapHeader();//web引用創(chuàng)建soap頭對(duì)象(改成您自己的)
- //設(shè)置soap頭變量
- Header.UserName = "zxq";
- Header.PassWord = "123456";
- test.MySoapHeaderValue = Header;
- //調(diào)用web 方法
- Response.Write(test.HelloWorld("我是強(qiáng)"));
- }
- }
Web Service身份驗(yàn)證解決方案二:通過(guò)集成windows身份驗(yàn)證。
1. 將web服務(wù)程序設(shè)為集成windows身份驗(yàn)證
2.客戶(hù)端web引用代碼
- Test.WebReference.Service1 wr = new Test.WebReference.Service1(); //生成web service實(shí)例
- wr.Credentials = new NetworkCredential("guest","123"); //guest是用戶(hù)名,該用戶(hù)需要有一定的權(quán)限
- lblTest.Text = wr.Add(2,2).ToString(); //調(diào)用web service方法
該方案的優(yōu)點(diǎn)是比較安全,性能較好,缺點(diǎn)是不便于移植,部署工作量大。
【編輯推薦】