保障Web服务的安全

简介: 从基于传送的安全转移到基于信息的安全   当我给出关于Web服务的介绍的时候,不可避免的就会有来自于听众的关于安全的问题。
从基于传送的安全转移到基于信息的安全

  当我给出关于Web服务的介绍的时候,不可避免的就会有来自于听众的关于安全的问题。最常见的问题是:“你是如何保障Web服务的安全的”。通常会跟随着怀疑的论断:“Web服务不可能是安全的”。

  但是,记住,今天的Web服务的主体是基于同样的再Web之下的授权的技术,我们称之为HTTP。从而,所有的常见的确保Web安全的应用程序——基本的认证和SSL是最常见的——同Web服务一起工作的很好。这些安全技术多年来对各种的在线商务事务处理发挥了巨大的作用。

  尽管如此,但是组织所具有的关于基于Web的安全策略的主要问题是通常的解决方法例如SSL有一点稍显笨拙,因为他们通常确保了整个线路传输的协议的安全,而不是只针对在协议之上传输的SOAP消息的。此外,对许多基于信号的集成项目,在信息到达他们的目标终点之前,一些中间步骤是必须的,同时传送级别的安全策略让这些信息在各个中间检查点并不安全。

  为了获得更好的控制级别和防止中间的安全问题,各种组织所作的基于SOAP的信息集成通常想要的都是在信息层确保安全而不是在传输层。这所意味的是信号自身确保它的安全,而不依赖于传送。当安全只限于信息的时候一些事情变得很显然。首先,通常为大多数Web 服务所提供的SSL能力会被我称之为信号安全的东西替代,而信号安全也将成为为所有的客户和服务方交互安全的信号的必须。第二,安全信息将会被信号自己携带。第三,除非中间或者最终节点拥有正确的安全基础构造同时是可信任的,否则信号会仍然保持安全并不可读取,然后被往前转递到下一个节点。

  Web 服务安全:WS-Security规范

  你如何确保信号的安全,而不是传输的安全?答案在于OASIS标准.WS-Security,作为一个所有工业认可的推荐在2004年4月发布。WS-Security所定义的是一个把三层安全策略加到SOAP信号中去的机制。

  认证标志:WS-Security认证标志使得客户可以以一种标准的方式发送包含在SOAP消息头中的用户名和密码或用于认证目的的X.509认证。尽管SAML和Kerberos标志普遍使用,但是关于这些标志的WS-Security规范也还没有发布。

  XML加密:WS-Security被使用在W3C的 XML加密标准,从而使得SOAP信号体和它的组成部分被加密以确保机密性。通常的,不同的加密算法都被支持——在Oracle Application Server 10g Release 10.1.3中,被支持的算法是3DES, AES-128和AES-256。

  XML数字签名:WS-Security被使用在W3C's XML数字签名标准中,从而使得SOAP消息可以被数字签名确保消息的整体性。通常的,签名时一个有消息本身的内容计算产生的。如果消息在发送途中被更改,数字签名就不可用了。Oracle Application Server支持DSA-SHA1, HMAC-SHA1, RSA-SHA1, 和 RSA-MD5算法。

  配置Web服务的服务端

  通常的当开发者看到WS-Security的三个组件,一些关于他们是如何在特定的应用程序中协调处理认证,加密,和数字签名的步骤的疑问也就产生了。

  幸运的是,绝大多数供应商例如Oracle正在实现WS-Security为一个发布的机制,从而可以把这个机制应用于新的和现有的Web服务。 例如在Oracle JDeveloper 10g Release 10.1.3中,你只需要简单的再Web服务节点上点击,选择安全Web服务,然后跟随走完一个简单的向导。图一是Oracle JDeveloper.中的一个WS-Security的基本工具的运行时候的外观的一个屏幕截图。

  图一 用Oracle JDeveloper 10g Release 10.1.3保护Web服务的安全

点击放大此图片

  为了提供一个简单的在运转的WS-Security的用况,我用图一中所提供的认证的属性——用户名,密码认证标志——并使用getEmpSalary方法把他们应用到HRService Web服务。

  注意到WS-Security运行时能力被元素使能。服务端对用户名和密码口令认证的需要被元素定义。

  一旦这些配置被布置在一个一般的Web服务Ear文件。在Oracle应用程序服务器端运行时的管理配置文件wsmgmt .xml会被这个信息更新。我在上个月的Web服务管理专栏中用图表的方式解释了这个过程。在布置以后,这个Web服务也就可以用WS-Security的用户名密码标志来测试了。

  配置Web服务客户端

  下一步是决定如何从来自于Web服务客户端获得用户名和密码的WS-Security标志放入SOAP信息中。通常的Web服务工具包提供一个API或者发布的机制去完成这个功能。

  图二 基于信号层安全的Web服务安全

点击放大此图片

  为了配置这个信息,Oracle JDeveloper在Web服务的客户端提供了一个如图一所示的向导的镜像。这两个向导的主要区别是在于客户端的向导提供了获取用户姓名和密码口令的能力,而服务器端的向导则没有提供。列表二提供了所产生的客户端配置。这只是可选的,因为很多开发者并不愿意把这些信息嵌入到配置文件中去(虽然这对测试是非常有用的)。Oracle应用服务器提供了一种简单的客户API,用以设置客户的Web服务的用户名和密码口令标志。

  当我运行生成的客户端,列表三种的信息就生成了,除去雇员的薪金请求,这些信号包含了信号头中包含的用户名和密码口令标志,还包含了支持了领先于标准的WS-Security wsse命名空间的标准模式的WS-Security参考。

  结论

  同很多其他的称之为WS—*的标准,通常都有关于WS-Security在异构环境下工作的协调性的担忧。在我的例子当中,我选择了最简单的可能性的情况,但是在具有更复杂的认证标志,加密和数字签名的实际文件中,协调性立刻变得极为重要。

  业界是非常清楚这个问题的,同时中立公司论坛例如Web服务协调性组织(WS-I)已经开始工作,该组织由主要的厂商参与,其中包括Oracle,从而确保Oracle, IBM, Microsoft, Sun, 和BEA 所实现的WS-Security实现可以共同操作的。

  这些努力能够带来一个名叫Basic Security Profile的如何使用WS-Security的轮廓或者说是一个推荐的最好实践。它将会补充其他的由WS-I发布的关键的协调性蓝本,Basic Profile 1.1。Basic Profile 1.1关注于SOAP, UDDI, 和 WSDL的最佳实践。

 
相关文章
|
开发工具 git
|
安全 网络安全 网络虚拟化
深入解析IDS/IPS与SSL/TLS和网络安全
防火墙 防火墙是一种网络安全设备,用于监控和控制网络流量,保护网络免受未经授权的访问、恶意攻击和威胁。防火墙可以基于规则进行数据包过滤,允许或阻止特定类型的流量通过。常见的防火墙类型包括网络层防火墙和应用层防火墙。 防火墙就像是你家的安全门,保护你的电脑网络不受坏人的攻击。它像一个警卫一样,只允许那些你信任的人进入你的网络,而把不好的人拒之门外。
498 0
|
Web App开发 前端开发 JavaScript
网页浏览和编辑DWG快速入门的方法(WEB CAD SDK)
MxDraw云图在线CAD解决方案,包括MxDraw、MxCAD开发包、图纸转换程序和后端服务。支持多种平台和CPU架构,推荐使用最新版Chrome或Edge浏览器。提供AutoCAD各版本dwg格式支持,具备三维和二维编辑功能。提供入门开发指南和功能丰富的示例。用户可下载开发包进行功能演示,包括在线预览和编辑CAD图纸。
1382 104
网页浏览和编辑DWG快速入门的方法(WEB CAD SDK)
|
数据可视化 算法
MATLAB Simulink 三相整流电路性能研究
MATLAB Simulink 三相整流电路性能研究
209 1
|
测试技术 持续交付 API
Git 代码提交注释管理规范
Git 代码提交注释管理规范
1050 0
|
文字识别 算法 数据库
开源OCR模型DIY票证信息抽取
票证检测矫正模型在实际生活中有着广泛的需求,例如信息抽取、图像质量判断、证件扫描、票据审计等领等场景,可以大幅提高工作效率和准确性。
|
监控 负载均衡 Java
SpringCloud 之Gateway组件详解(上)
SpringCloud 之Gateway组件详解
528 0
|
监控 安全 网络协议
推荐三款站长喜爱的FTP连接工具
对于站长来说,很多情况下都会使用FTP工具,我们也知道ftp工具主要用于将文件上传到服务器上。但是一些ftp在传送文件时是不稳定的。那什么是ftp工具起作用的呢?今日小编就为各位站长推荐三款站长喜爱的ftp工具。
907 0
推荐三款站长喜爱的FTP连接工具
|
存储 域名解析 负载均衡
【题解】结营小测试全解析:第六届字节后端青训营
小伙伴们!快来看看结营解析答案,验证一下自己是不是前百分之七十吧!这部分都是根据个人经验和网上收集所得到的第六届青训营结营全解析,如果存在错误,也请在评论区友好讨论,让我们一起把这篇文章变得更加完美。
373 0
|
设计模式 开发框架 前端开发
SpringMVC 框架学习1
SpringMVC 框架学习
136 0