通向架构师的道路 第十三天 Axis2 Web Service安全初步

一、WSSecurity简述

安全的Web服务是Web服务成功的必要保证。但大家都知道,Web服务使用XML来进行数据交换,而XML在默认情况下是明文编码 的;同时,大部分Web服务使用HTTP协议作为传输协议,同样,HTTP也是使用明文方式来传输数据的。这就造成了在不加密的传 输协议上传输不加密的信息,从而使信息传输的保密性受到威胁。作为企业级的应用,以上的方式不能满足安全性基本要求:

2  数据在internet上传输的时侯是不应该被第三方能够看到的;

2  双方必须能够验定彼此间的来源;

2  双方必须能够确定被传送的数据没有被在中途中遭到黑客的修改。

通过使用SSL协议我们可以解决第一个问题即:"不应该被第三方看到";使用数字签名和数字证书可以解决后面的 两个问题。当使用数字证书方法时,Web 服务请求者必须有一个由可信认证中心签署的数字证书。请求者使用这个证书来表明它 们的身份,并对 SOAP 消息进行数字签名。对方系统接收到消息后,就可对消息做时间戳记并进行日志记录。此时,数字签名会 得到验证。验证过程将确保消息来自发送方,并且还要验证消息内容在传输过程中没有被篡改。

IBM、Microsoft 和 Verisign 于2002年十二月份联合发布了一个关于 Web 服务安全性(Web Services Security,WS- Security)的规范,该规范描述如何向 SOAP 消息附加签名和加密报头;另外,它还描述如何向消息附加安全性令牌(包括二进 制安全性令牌,如 X.509 证书),提供了一套帮助 Web 服务开发者保护 SOAP 消息交换的机制。

根据应用的对安全要求的级别不同,可以采用不同的方式来实现安全性,以下是目前最常用的一些实现方式(从低到高排列 ):

2  J2EE Web应用默认的访问控制(数据是明文的);

2  使用axis的Handler进行访问控制(数据是明文的);

2  使用Servlet过滤器(Filter)进行访问控制(数据是明文的);

2  使用SSL/HTTPS协议来传输(加密的数据传输协议);

2  使用WS-Security规范对信息进行加密与身份认证(数据被加密传输)。

前三种方式对于安全级别要求不高的应用是可行的,它能够使用Web应用访问认证机制来进行权限验证,从而保护对资源的访 问。但需要注意的是,虽然它们进行了身份验证,但信息的传递还是以明文的方式进行的,不能保证信息在传输过程中不被窃取 。SSL是一个安全的传输协议,使用它传输Web服务能保证信息不被第三方窃取。但它有个缺点就是对系统资源消耗大。采用最后 一种方式,信息被签名后再加密,然后把加密后的信息网络上传播,这样,即使第三方获得加密后的传输信息,也不能解密。对 于安全级别要求高的系统,应该采用WS-Security规范来作为Web服务安全性解决方案。

二、基于https通信并且使用用户名密码来验证的WS

在一般的应用中,我们可以通过https来保护我们传输的明文数据。

关键在于我们需要来验证这个客户端过来的请求,即需要具有基本的用户名,密码才能访问我的Web Service,我们称之为 Basic Auth。

2.1 错误做法

在很多项目中,有些开发队伍为了图省事,客户对环境的掌控也不好,为了验证一个webservice,我们往往会采用以下这样 的验证手法:

第一种:

http://xxxx.xxx.xxx/abc.wsdl?username=验证个头&password=验证个头

服务端拿到这个url把username,password用request.getParameter出来后,和数据库一匹配,验证。

第二种:

<Request xmlns="http://10.225.106.35">

    <username>验证个头啊</username>

    <password>不要老是你个头你个头</password>

    <BusinessData>2007-01-01</BusinessData>

</ Response >

服务端拿到后把这个soap request body中的<username>和<password>拿出来后和数据库一匹配,又验证了!

这两种做法,无疑是掩耳盗铃!!!(不要和我说业务实现是最主要的,等你的数据哪天没了,厂长经理的工 资被篡改了,如果你愿意被客户做成东方不败,那你尽管去这样做就好了。

时间: 2024-12-26 18:08:03

通向架构师的道路 第十三天 Axis2 Web Service安全初步的相关文章

通向架构师的道路 第十一天 Axis2 Web Service(二)

一.总结前一天 前一天中我们讲述了如何生成一个Axis2的WebService, 如何布署以及4种不同的客户端, 它们是: 传统式, 非阻塞式, 双工 模式, 双工非阻塞. 并且我们看到了一个Axis2的Web Service的布署描述: <service name="HelloWorld"> <parameter name="ServiceClass">org.sky.axis2.helloworld.HelloWorld</para

通向架构师的道路 第十天 Axis2 Web Service(一)

一.Axis2简介 1.1 介绍Axis2 Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP withAttachments 规 范(来自 Apache Group )的开放源代码实现.有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如 JBuilder以及著名的Eclipse J2EE插件Lomboz.AXIS的最新版本可以从 http://ws.apache.org/axis/index.html

通向架构师的道路 第二十三天 maven与ant的奇妙整合

一.前言 我们在<万能框架spring>前四天中都用到了maven,接下去要讲述在SSX这样的架构下我们的"单元测试" 是怎么进行的,但是在此之前我们再来深入入解一下maven,因为我们的单元测试需要用到的是junit+ant+junitreport这样的组 合.而......由于我们已经使用了maven,那么我们如何可以延续经典的junit+ant这样的单元测试的组合呢?其答案就是 把maven和ant再进行组合一下. 二.用Maven任务在Ant中使用Maven依赖 M

通向架构师的道路 第二十五天 SSH的单元测试与dbunit的整合(下)

3.4使用框架 我们准备两份测试用数据 test_del_table.xml文件 <?xml version="1.0" encoding="UTF-8"?> <Tables> <table>t_student</table> </Tables> test_insert_table.xml文件 <?xml version="1.0" encoding="UTF-8&quo

通向架构师的道路(第一天)之Apache整合Tomcat

原文转自:  http://blog.csdn.net/lifetragedy/article/details/7698555 一.先从J2EE工程的通用架构说起 这是一个通用的Web即B/S工程的架构,它由: ü   Web Server ü   App Server ü   DB Server 三大部分组成,其中: ²  Web Server 置于企业防火墙外,这个防火墙,大家可以认为是一个CISCO路由器,然后在CISCO路由器上开放了两个端口为:80和443. 80端口:用于正常的htt

通向架构师的道路 第二十七天 IBM网格计算与企业批处理任务架构

一.批处理 我们在一些项目中如:银行.保险.零商业门店系统中的对帐.结帐.核算.日结等操作中经常会碰到一 些"批处理"作业. 这些批处理经常会涉及到一些大数据处理,同时处理一批增.删.改.查等SQL,往往涉及到好 几张表,这边取点数据那边写点数据,运行一些存储过程等. 批处理往往耗时.耗资源,往往还会用到多线程去设计程 序代码,有时处理不好还会碰到内存泄漏.溢出.不够.CPU占用高达99%,服务器被严重堵塞等现象. 笔者曾经经历过 一个批处理的3次优化,该批处理笔者按照数据库连接池的原

通向架构师的道路(第二十七天)IBM网格计算与企业批处理任务架构

一.批处理 我们在一些项目中如:银行.保险.零商业门店系统中的对帐.结帐.核算.日结等操作中经常会碰到一些"批处理"作业. 这些批处理经常会涉及到一些大数据处理,同时处理一批增.删.改.查等SQL,往往涉及到好几张表,这边取点数据那边写点数据,运行一些存储过程等. 批处理往往耗时.耗资源,往往还会用到多线程去设计程序代码,有时处理不好还会碰到内存泄漏.溢出.不够.CPU占用高达99%,服务器被严重堵塞等现象. 笔者曾经经历过一个批处理的3次优化,该批处理笔者按照数据库连接池的原理实现了

通向架构师的道路 第十八天 万能框架Spring(一)

前一阵列刚换了个新的工作环境,然后自己的baby也刚出生,一直没有时间去做工作以后的其它事了,担搁了一段日子. 今天儿子满一周了,我内人她家帮着照顾着,总算我可以喘口气休息一下,因此决定将这个系列的博文继续下去,同时也将 此篇献给我刚出生一周的儿子和幸苦了10个月的爱人. 二.基本概念 Spring,作为一个流行框架它给我们在日常工程中的框架搭建提供了太多的便利了,它就像一个骨架一样,你可以在上面自 己去塑出肌肤与血肉并赋于它灵魂. 从今天开始我们将要连续几天基于Spring的基础上来讲软件开发

通向架构师的道路 第二十六天 漫谈架构与设计文档的写作技巧

前言: 这篇是一篇番外篇,没有太多代码与逻辑,完全是一种"软"技巧,但是它对于你如何成为一名合构的架构设 计人员很重要. 在此要澄清一点,架构师本身也是"程序员",不是光动嘴皮子的家伙们,如果你不是一名程序虽出身 那你根本谈不上也不可能成为一名架构师. 那么架构师还有哪些是作为一名程序员来说不具备的呢? 其中有一项 能力就叫做"文档写作能力". 一.Soft Skill与Hard Skill 作为一名架构师除了是一名资深的程序员外,它还 必须具有