从基于传送的安全转移到基于信息的安全

当我给出关于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的最佳实践。

本文转自 牛海彬 51CTO博客,原文链接:http://blog.51cto.com/newhappy/77268,如需转载请自行联系原作者

保障Web服务的安全相关推荐

  1. 第三十六讲 ASP.NET中的Web服务(三)

    *摘要 .ASP.NET安全性 .基本验证和简要验证 .集成Windows验证 .表单验证 .SSL .客户授权证书验证 .模拟 * 身份验证 .身份验证是指以下过程:获取标识凭据(如用户名和密码), ...

  2. 如何利用 “集群流控” 保障微服务的稳定性?

    作者:宿何 微服务的稳定性一直是开发者非常关注的话题.随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战.应用高可用服务 AHAS ...

  3. Cluster模式潜在问题及解决方案、Web服务综合解决方案

    会不断更新!冲冲冲!跳转连接 https://blog.csdn.net/qq_35349982/category_10317485.html Cluster模式潜在问题及解决方案.Web服务综合解决 ...

  4. Web函数请求多并发上线,Web服务部署更快更省

    Web函数(Web Function)是云函数的一种函数类型,区别于事件函数(Event Function),Web函数通过支持原生的HTTP/WebSocket协议,兼容任意一种原生Web框架编写的 ...

  5. Web服务及相关领域的基金信息

    http://isis.nsfc.gov.cn/portal/proj_search.asp 收集了一下2008年批准的Web服务及相关领域的基金信息 项目批准号/申请代码1        60803 ...

  6. 一个Web服务的性能瓶颈分析及对策

    1. 引言 QoS(Quality of Service,服务质量)控制技术作为下一代网络的核心技术之一,越来越成为计算机网络中研究与开发的热点问题.QoS控制的基本目标是为Internet应用提供性 ...

  7. 使用 UDDI 的 Web 服务描述和发现(第一部分)

    UDDI - Web 服务的全球注册表 UDDI 是一个公共的注册表,旨在以一种结构化的方式来保存有关各公司及其服务的信息.通过 UDDI,人们可以发布和发现有关某个公司及其 Web 服务的信息.这些 ...

  8. 【技术分享】Sanic+Amis:3天快速搭建一个web服务

    前言 测试工作中,需要搭建一些生产力小工具来提高工作效率. 基于web的服务,无需终端可多人协作,易部署,成为第一选择. 问题:搭建web服务需要全栈知识,编写http服务和前端样式需要一定技术门槛. ...

  9. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

  10. nodejs静态web服务

    项目准备 Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的 ...

最新文章

  1. java面向对象认定的特征_Java面向对象的三大特征(一)
  2. 行为模式之Strategy模式
  3. JQuery UI – droppable 中文文档
  4. MySQL触发器的使用
  5. 看云原生实战就来这里,侬晓得伐?
  6. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】
  7. 我国身家超过亿元的有多少人?
  8. python爬取豆瓣电影并分析_Python爬取豆瓣电影的短评数据并进行词云分析处理
  9. thinkpaidE480office安装文件夹
  10. 深入理解 AMQP 协议
  11. 二级c语言基础题库100题,二级C语言上题库100题.doc
  12. native层 安卓_安卓逆向学习入门之过反调试(一)
  13. 数据仓库与数据挖掘(二)
  14. IDEA SpringBoot多模块项目搭建详细过程(转)
  15. 计算机组成与设计---硬件/软件接口---计算机概要与技术
  16. 微PE安装win10系统 GPT、BOOTMGR PBR、EFI PART红色
  17. 微信小程序 等待几秒、_微信小程序从提交审核到审核通过最快速度:39分55秒!...
  18. js+ajax编码三级联动
  19. 交房后如何在手机上办理产权证,线上办理总耗时约6天拿到证书
  20. [转]Facebook 开源的快速文本分类器 FastText

热门文章

  1. 【Android Developers Training】 7. 添加Action Buttons
  2. 【新番尝鲜】玛利亚狂热--百合VS伪娘之战
  3. Codeforces Round #449 (Div. 2) B Chtholly's request (预处理)
  4. webstorm 去点右边白线
  5. javascript中数组循环的方式
  6. stm32中断 抢占优先级 和 响应优先级 有什么区别
  7. C#基础概念 代码样例
  8. 一只刚学竞价两周的菜鸟
  9. BlogEngine.Net架构与源代码分析系列part2:业务对象——共同的父类BusinessBase
  10. Java byte变成无符号整数~~~