[转帖]两种方法实现Web Service身份验证_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3369 | 回复: 0   主题: [转帖]两种方法实现Web Service身份验证        下一篇 
q563725885
注册用户
等级:少校
经验:1134
发帖:98
精华:1
注册:2013-5-7
状态:离线
发送短消息息给q563725885 加好友    发送短消息息给q563725885 发消息
发表于: IP:您无权察看 2013-5-10 14:43:04 | [全部帖] [楼主帖] 楼主

Web Service身份验证解决方案一:通过通过SOAP Header身份验证。

1.我们实现一个用于身份验证的类,文件名MySoapHeader.cs

MySoapHeader类继承自System.Web.Services.Protocols.SoapHeader。且定义了两个成员变量,UserName和PassWord,还定义了一个用户认证的函数ValideUser。它提供了对UserName和PassWord检查的功能

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.HtmlControls;  
  8. using System.Web.UI.WebControls;  
  9. using System.Web.UI.WebControls.WebParts;  
  10. using System.Web.Services;  
  11. using System.Web.Services.Protocols;  
  12. ///   
  13. ///MySoapHeader 的摘要说明  
  14. ///   
  15. public class MySoapHeader:SoapHeader  
  16. {  
  17.  public MySoapHeader()  
  18.  {  
  19.  //  
  20.  //TODO: 在此处添加构造函数逻辑  
  21.  //  
  22.  }  
  23.  public string UserName;  
  24.  public string PassWord;  
  25.  public bool ValideUser(string in_UserName, string in_PassWord)   
  26.  {  
  27.  if ((in_UserName == "zxq") && (in_PassWord == "123456"))  
  28.  {  
  29.  return true;  
  30.  }  
  31.  else  
  32.  {  
  33.  return false;  
  34.  }  
  35.  }  

;

2.下面我们创建WebService.asmx    WebService.cs代码如下:

  1. using System;  
  2. using System.Collections;  
  3. using System.Web;  
  4. using System.Web.Services;  
  5. using System.Web.Services.Protocols;  
  6. ///   
  7. ///WebService 的摘要说明  
  8. ///   
  9. [WebService(Namespace = "http://tempuri.org/")]  
  10. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  11. public class WebService : System.Web.Services.WebService  
  12. {  
  13.  
  14.  public WebService()  
  15.  {  
  16.  
  17.  //如果使用设计的组件,请取消注释以下行   
  18.  //InitializeComponent();   
  19.  }  
  20.  public MySoapHeader header; ////定义用户身份验证类变量header  
  21.  [WebMethod(Description = "用户验证测试")]  
  22.  [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头   
  23.  public string HelloWorld(string contents)  
  24.  {  
  25.  //验证是否有权访问   
  26.  if (header.ValideUser(header.UserName, header.PassWord))  
  27.  {  
  28.  return contents + "执行了";  
  29.  }  
  30.  else  
  31.  {  
  32.  return "您没有权限访问";  
  33.  }  
  34.  }  
  35. }  

;

3.客户端 创建个Default.aspx

  1. Default.aspx .cs代码  
  2. using System;  
  3. using System.Configuration;  
  4. using System.Data;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. public partial class _Default : System.Web.UI.Page   
  12. {  
  13.  protected void Page_Load(object sender, EventArgs e)  
  14.  {  
  15.  com.cn1yw.WebService test = new com.cn1yw.WebService();//web引用(改成您自己的)  
  16.  com.cn1yw.MySoapHeader Header = new com.cn1yw.MySoapHeader();//web引用创建soap头对象(改成您自己的)  
  17.  //设置soap头变量  
  18.  Header.UserName = "zxq";  
  19.  Header.PassWord = "123456";  
  20.  test.MySoapHeaderValue = Header;  
  21.  //调用web 方法  
  22.  Response.Write(test.HelloWorld("我是强"));  
  23.  }  

;

Web Service身份验证解决方案二:通过集成windows身份验证。

1. 将web服务程序设为集成windows身份验证

北京联动北方科技有限公司

2.客户端web引用代码

  1. Test.WebReference.Service1 wr = new Test.WebReference.Service1(); //生成web service实例   
  2. wr.Credentials = new NetworkCredential("guest","123"); //guest是用户名,该用户需要有一定的权限   
  3. lblTest.Text = wr.Add(2,2).ToString(); //调用web service方法  

;

该方案的优点是比较安全,性能较好,缺点是不便于移植,部署工作量大。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论