zoukankan      html  css  js  c++  java
  • 两种方法实现Web Service身份验证

    两种方法实现Web Service身份验证

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

    3.客户端 创建个Default.aspx

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

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

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

    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方法  

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

  • 相关阅读:
    ActiveMQ中JMS的可靠性机制
    ActiveMQ中Broker的应用与启动方式
    ActiveMQ支持的传输协议
    ActiveMQ常见消息类型
    Oracle体系结构及备份(十六)——bg-ckpt
    PHP自学之路---雇员管理系统(1)
    UVa11187
    给Android组件添加事件一个很好用的方法
    【项目那些事儿】项目哪些事儿?
    struts2对拦截器使用带实例
  • 原文地址:https://www.cnblogs.com/yangzhx/p/3571712.html
Copyright © 2011-2022 走看看