动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Web Service身份验证

09-15 17:04 80浏览
举报 T字号
  • 大字
  • 中字
  • 小字

身份验证一直是程序的安全性的一个考证,Web Service不可避免地也需要用到身份验证的功能,我们一来看看Web Service身份验证是如何实现的。

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

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

MySoapHeader类继承自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开发程序和创建Web Service程序都需要用到的,也是一个程序的安全性能的基础功能。想学习更多更全面的Web Service知识,可以观看本站的Web Service视频教程,里面有许多优质课程等你来学!

 

0人推荐
共同学习,写下你的评论
0条评论
代码小兵1268
程序员代码小兵1268

11篇文章贡献53362字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消