webservice安全机制实现方法

Posted xing-cheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice安全机制实现方法相关的知识,希望对你有一定的参考价值。

 

今天,抽空研究了一下webservice的安全机制,主要一种方法使用SoapHader来实现。使用SoapHeader可以来控制非法用户对webservice的调用。下面是具体的实现方法。

1:首先我们自定义一个类MySoapHeader,需要继承System.Web.Services.Protocols.SoapHeader 这个类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services.Protocols;
 6 
 7 namespace WebService.Common
 8 {
 9     public class MySoapHeader : SoapHeader
10     {
11 
12         public MySoapHeader(string username,string userpwd)
13         {
14             this.username = username;
15             this.userpwd = userpwd;
16         }
17         #region user
18         /// <summary>
19         /// 获取或设置用户名
20         /// </summary>
21         public string username
22         {
23             get { return username; }
24             set { username = value; }
25         }
26         /// <summary>
27         /// 获取或设置用户密码
28         /// </summary>
29         public string userpwd
30         {
31             get { return userpwd; }
32             set { userpwd = value; }
33         }
34 
35        
36         #endregion
37 
38         /// <summary>
39         /// 验证客户端传来的用户信息
40         /// </summary>
41         /// <param name="in_username"></param>
42         /// <param name="in_userpwd"></param>
43         /// <returns></returns>
44         public bool ValideUser(string in_username, string in_userpwd)
45         {
46             
47             if (in_username == "admin" && in_userpwd == "admin" )
48             {
49                 return true;
50             }
51             else
52             {
53                 return false;
54             }
55         }
56 
57     }
58 }

2:添加webservice,并编写相应的代码

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;

/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
        public MySoapHeader header; ////定义用户身份验证类变量header
        [WebMethod]
        [System.Web.Services.Protocols.SoapHeader("header")]//用户身份验证的soap头 
        public string HelloWorld(string contents)
        {
            //验证是否有权访问 
            if (header.ValideUser(header.username, header.userpwd))
            {
                return contents + "调用服务成功";
            }
            else
            {
                return "对不起,您没有权限访问";
            }
        } 
}

3:客户端调用。这里我用的是webform写的,大家也可以用别的哈。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebApplication2.ServiceReference1;
namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            HDSServiceSoapClient test = new HDSServiceSoapClient();
            MySoapHeader heder = new MySoapHeader();
            heder.username = "admin";
            heder.userpwd = "admin";
            Response.Write(test.HelloWorld(heder, "恭喜你:"));
        }
    }
}

好了,这就是所有的方法和代码了,是不是很简单呢。希望大家多多互相帮助!!

 

以上是关于webservice安全机制实现方法的主要内容,如果未能解决你的问题,请参考以下文章

C#动态调用webService出现 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段

如何发布https的webservice

如何通过HTTPS方式访问webservice

如何用C++实现支持HTTPS的RESTful WebServer

线程的同步机制:同步代码块&同步方法