• 【转】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("我是强"));
    }
    }

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

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

  • 相关阅读:
    洛谷 P2062 分队问题
    CentOS6.8安装GitLab
    restful service+jersey架构
    安装好VMware后,启动CentOS时失败
    开发文档模板
    Java内存模型
    虚拟机字节码执行引擎之方法调用
    虚拟机字节码执行引擎之运行时栈帧结构
    虚拟机类加载机制之类加载器
    虚拟机类加载机制之类的加载过程
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/2545097.html
Copyright © 2020-2023  润新知