WebService 简单安全验证

2011-03-04 10:34 by Vincent.Studio, 8158 阅读, 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"时结果

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

转载于:https://www.cnblogs.com/toSeeMyDream/p/5768274.html

WebService 简单安全验证相关推荐

  1. WebService 用户名密码验证

    原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...

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

    一.简单登录验证(防SQL注入) GetString(序号) 返回某一列的值(当用户不记得列名序号时,可使用GetOrdinal()获取到序号) GetInt32(序号) 针对的是 int 字段,返回 ...

  3. 机器学习(MACHINE LEARNING)交叉验证(简单交叉验证、k折交叉验证、留一法)

    文章目录 1 简单的交叉验证 2 k折交叉验证 k-fold cross validation 3 留一法 leave-one-out cross validation 针对经验风险最小化算法的过拟合 ...

  4. 简单支付验证(SPV)与创新

    "比特币挖矿越来越难了怎么办?","比特币存在的缺陷是否会造成自身的消亡呢?","比特币是否是一个注定失败的实验?",人们对比特币的疑问有很 ...

  5. jQuery ajax简单案例-验证用户名是否可用

    jQuery ajax简单案例-验证用户名是否可用 HTML <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  6. 使用Spring Security进行简单身份验证

    朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 身份验证对于除了最基本的Web应 ...

  7. java简单密码验证程序

    java简单密码验证程序 package demo01;import java.util.Scanner;/*** java模拟密码验证问题* 从键盘上录入6位密码,验证密码是不是6位,如果不是6位提 ...

  8. php get验证,PHP+Ajax简单get验证操作示例

    本文实例讲述了PHP+Ajax简单get验证操作.分享给大家供大家参考,具体如下: 1.显示页面代码 index.html XMLHttpRequest独对象使用实例 //第一步创建ajax引擎对象 ...

  9. 01_11_Strtus2简单数据验证

    01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ...

最新文章

  1. 干货丨不确定性原理——人工智能的哲学基础
  2. 继续说说美国互联网版权监管法案(SOPA)
  3. mybatis中 Executor的设计与实现
  4. 【springboot】SpringBootTest 测试时, application.properties 文件的查找顺序
  5. sql server2008系统表详细说明sys.开头的表
  6. 树莓派能直接运行python程序_树莓派怎么运行python程序
  7. vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)
  8. 【神经网络八股扩展】:自制数据集
  9. leetcode —— 783. 二叉搜索树结点最小距离
  10. 超极本认知六大误区详解:不只是轻薄+长续航
  11. c++中初始化列表顺序和声明顺序一致
  12. linux下java多线程_Linux系统下Java问题排查——cpu使用率过高或多线程锁问题
  13. python在建筑施工方面的应用_有哪些关于 Python 在建筑中的应用和教程?
  14. 入门几款好的UML工具介绍
  15. 京东金融创新”ABS云平台” 大数据提升直接融资效率
  16. SPSS入门笔记记录
  17. 计算机网络技术广告,屏蔽QQ广告和迷你首页广告
  18. 百度地图迁徙大数据_百度地图迁徙大数据:复工后北上广深城内出行年后首次大幅增长...
  19. 爬虫技术 -- 基础学习(一)HTML规范化(附特殊字符编码表)
  20. 云计算的发展趋势是什么?

热门文章

  1. 为什么c++文件只能执行一次_numba从入门到精通(1)—为什么numba能够加速
  2. JAVA 8 LIST<对象> 转换SET
  3. mysql中如何将几个没有关系的结果集放在一起
  4. 检查gzip是否起效
  5. ES启动错误 ERROR: the system property [es.path.conf] must be set
  6. singft 函数 matlab,(新)信号与系统MATLAB实验全.doc
  7. Apple开源了用于ARM CPU的iOS内核
  8. 数据结构 之 并查集(Disjoint Set)
  9. Ubuntu14.04快速搭建SVN服务器及日常使用
  10. uitextfield长按显示英文select all,copy,paste?