两种方法实现Web Service身份验证
2013-02-28 15:34
330 查看
Web Service身份验证解决方案
一:通过通过SOAP Header身份验证。
1.我们实现一个用于身份验证的类,文件名MySoapHeader.csMySoapHeader类继承自System.Web.Services.Protocols.SoapHeader。且定义了两个成员变量,UserName和PassWord,还定义了一个用户认证的函数ValideUser。它提供了对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 的摘要说明 /// public class MySoapHeader:SoapHeader { public MySoapHeader() { // //TODO: 在此处添加构造函数逻辑 // } 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.下面我们创建WebService.asmx WebService.cs代码如下:
using System; using System.Collections; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; /// ///WebService 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { public WebService() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } public MySoapHeader header; ////定义用户身份验证类变量header [WebMethod(Description = "用户验证测试")] [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头 public string HelloWorld(string contents) { //验证是否有权访问 if (header.ValideUser(header.UserName, header.PassWord)) { return contents + "执行了"; } else { return "您没有权限访问"; } } }
3.客户端 创建个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引用创建soap头对象(改成您自己的) //设置soap头变量 Header.UserName = "zxq"; Header.PassWord = "123456"; test.MySoapHeaderValue = Header; //调用web 方法 Response.Write(test.HelloWorld("我是强")); } }
二:通过集成windows身份验证。
1. 将web服务程序设为集成windows身份验证2.客户端web引用代码
Test.WebReference.Service1 wr = new Test.WebReference.Service1(); //生成web service实例 wr.Credentials = new NetworkCredential("guest","123"); //guest是用户名,该用户需要有一定的权限 lblTest.Text = wr.Add(2,2).ToString(); //调用web service方法
该方案的优点是比较安全,性能较好,缺点是不便于移植,部署工作量大。
相关文章推荐
- 两种方法实现Web Service身份验证
- 两种方法实现Web Service身份验证
- 两种方法实现Web Service身份验证
- 在PHP中实现用户身份认证两种方法
- 实现带有用户身份验证的文件传输Web Service(4)
- 实现带有用户身份验证的Web Service
- asp.net forms 身份验证方式下跨域登录信息共享的实现方法
- 利用redis来实现身份验证的一种方法,类似session机制
- PHP中IIS7实现基本身份验证的方法
- Nodejs中session的简单使用及通过session实现身份验证的方法
- PHP中对用户身份认证实现两种方法
- 实现带有用户身份验证的文件传输Web Service(1)
- PHP中配置IIS7实现基本身份验证的方法
- 在PHP中实现用户身份认证两种方法
- 实现带有用户身份验证的文件传输Web Service(2)
- 实现带有用户身份验证的文件传输Web Service(2)
- 实现带有用户身份验证的文件传输Web Service(3)
- ASP.NET中WebService的两种身份验证方法
- PHP中对用户身份认证实现两种方法