WebService 简单安全验证

转http://www.cnblogs.com/luking/archive/2011/03/04/1970592.html

WebService 简单安全验证

2011-03-04 10:34 by Vincent.Studio, 9815 阅读, 0 评论, 收藏编辑

最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebService的安全授权这个方面进行了一下研究,以前调用的WebService大部分都是局域网内部调用,几乎没有什么权限需要增加的,今天借此机会,深入研究了一下,发现实现起来还是挺容易的。

基本原理就是利用SoapHeader 类,继承该类,然后在我们公布的方法上加上对应的标签,呵呵。现在做一个Demo程序,进行验证。我们首先衍生一个自己的子类,暂命名为SecurityHeader ,在该类中需要增加一个公共属性,详看如下代码

public class SecurityHeader : SoapHeader

{
        public string SecurityKey
        {
            get;
            set;
        }
    }

在WebService 中对该SoapHeader 的调用实现,也是比较容易理解的,详看一下代码就可以很好的理解了,代码中只需对SoapHeader进行验证就可以了。如果我们不增加SoapHeader,其实质就是普通的Public 类型的WebService 。调用的时候完全的公开的,不需要任何的验证信息。

/// <summary>
    /// Summary description for Integration
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Integration : System.Web.Services.WebService
    {
        public SecurityHeader securityKey = new SecurityHeader();

[WebMethod]
        [SoapHeader("securityKey")]
        public string HelloWorld(string show)
        {
            if (securityKey.SecurityKey.Equals("850"))
            {
                return "This is security webservice " + show;
            }
            else
            {
                return "Sorry,You didn‘t permissions!";
            }
        }

[WebMethod]
        public string HelloPanda(string show)
        {
            return "This is public webservice  " + show;
        }

}

验证程序代码如下:

class Program
    {
        static void Main(string[] args)
        {
            PandaRGIntegration.SecurityHeader header = new PandaRG.Listrak.PandaRGIntegration.SecurityHeader();
            header.SecurityKey = "850";

PandaRGIntegration.IntegrationSoapClient client = new PandaRG.Listrak.PandaRGIntegration.IntegrationSoapClient();
            System.Console.WriteLine(client.HelloWorld(header,"Vincent"));
            System.Console.WriteLine(client.HelloPanda("Vincent"));
            System.Console.Read();
        }
    }

调用结果:

当我们修改 header.SecurityKey = "8500"时结果

整个完整例子到此实验完毕。感性趣的,也可以自己试验一下。

时间: 2024-10-23 03:36:34

WebService 简单安全验证的相关文章

webservice简单引用

//1.创建网站//2.新建项=>添加web服务//运行texttweb.asmx可以通过访问http://域名/webservice/texttweb.asmx来验证了//3.添加服务引用=>发现服务=>确定添加//4.添加窗体调用webservive对外发布的方法,可以调用显示webservice对外开发的方法了 web服务 1 using System; 2 using System.Collections.Generic; 3 using System.Data.SqlClien

【php】用filter_var实现的简单参数验证

filter_var是在php5.2.0中开始提供的.详细说明见: http://www.php.net/manual/zh/book.filter.php 先看看代码: <?php class Utils {     /**      * 主要是调用filter_var_array验证,再扩充一个required字段来表示必填项.      * http://www.php.net/manual/zh/book.filter.php      * 注意: (可以不传,但不能传错)      *

【ADO.NET】2、各种版本的 简单登录验证

一.简单登录验证(防SQL注入) GetString(序号) 返回某一列的值(当用户不记得列名序号时,可使用GetOrdinal()获取到序号)GetInt32(序号) 针对的是 int 字段,返回int字段的值GetOrdinal("列名") 根据列名得到序号 Console.WriteLine("请输入用户名:"); string Uname=Console.ReadLine(); Console.WriteLine("请输入密码:"); s

webservice简单了解

一:WebService的功能是什么? WebService是一种跨编程语言和跨操作系统平台的远程调用技术 所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统(采用交互提问的方式来加深大家对此技术的理解). 远程调用技术有什么用呢?商场的POS机转账调用的转账方法的代码是在银行服务器上,还是在商场的pos机上呢? 什么情况下可能用到远程调用技术呢?例如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以w

.net请求Webservice简单实现天气预报功能

很久没有接触Webservice的知识,今天稍微复习了一下关于webservice,简单做了一个天气预报的功能,虽然界面丑的厉害,但功能算是实现了,以下是效果展示. 这东西没什么难点,只是天气预报的功能在网站类的开发中会经常用到,所以就简单写下,以便以后查阅. 1.新建一个网站或者web应用程序,添加一个aspx页面,用于展示天气数据.(这个应该不用细讲吧) 2.在网上找一个免费的天气预报的接口,我用的是Webxml网站的,地址如下: http://webservice.webxml.com.c

Webservice简单调用示例

Webservice简单调用示例 webservice主要是一些站点为我们写好了的方法,供我们调用,当然我们也可以自己去编写自己的webservice,本文主要是通过一个小的实例,去如何调用webservice.下面先给出几个常用的webservice的调用地址. 快递查询接口 http://webservice.36wu.com/ExpressService.asmx ip查询接口 http://webservice.36wu.com/ipService.asmx 天气预报接口 http://

android loginDemo +WebService用户登录验证

本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.loginActivity是android4.0下的自带演示例程,他自带登录界面.用户名格式设定.输入密码和用户名格式是否正确.用户登录时间进度条等功能,用户可以在这个例程的基础上延伸出自己login用户登录程序.在这里我没有对这个程序做过多的延伸,只是增加Webservice验证用户登录的功能,使其成为一个完整的网络用户登录验证的模块程序.在这我会对这个Demo做全面的解析,使

主题:Java WebService 简单实例

链接地址:主题:Java WebService 简单实例    http://www.iteye.com/topic/1135747 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要的重复操作. 一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService].   2.创建[Class]类,命名为[ServiceHello],位于[com.

【Servlet】Servlet简单登陆验证实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现Servlet简单登陆验证实例.结构如下 1.LoginCheck.java package com.mucfc; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annota