2008年5月13日星期二

SOA_012:SOA 集成架构



SOA 集成架构分为五层,每层使用不同的技术和标准,五层一起构成了一个完整的SOA应用。

1. 业务服务层:抽象服务,创建服务。
(1)WSIF:Web Services Invocation Framework.(由Apache WebService项目组提供)
WSIF提供了一套API用于调用Web services,无论这些服务是由谁提供的。
WSIF中提供的API允许编程者通过WSDL描述内容和web服务调用的抽象层打交道,而不是直接使用SOAP来调用web服务。
好处:使用WSIF后就可以使用统一的编程模型来调用web服务而不需要了解该web服务是如何实现和被访问的(Java、EJB、Servlet、.Net、C#)。

2. 服务总线层:功能 连接各种不同的服务,路由和转换消息,为服务增加各种策略。
(1)SAML:Security Assertion Markup Language. (由OASIS制定)
SAML是一个基于XML的标准,用于在不同的安全域之间交换验证和授权数据。
安全性断言是关于用户身份的语句,只能通过接收断言发布者的站点信任获得支持。
好处:解决 Web Browser Single Sign-On(SSO)和 role-based access control(RBAC)问题。

在SAML中,发布断言的站点叫“发布者”、“断言方”、或“源站点”。接收断言并信任它们的站点叫“信任方”或“目标站点”。
举例说明1:用户甲先登陆A站点,然后访问B站点。
B站点将向A站点发送SAML请求(包括浏览器凭证,SOAP消息),返回通过验证的用户名(包含时间之窗)。
源站点只负责验证,不负责授权(目标站点负责授权)。

举例说明2:用户经常访问3个应用,由用户名/密码验证方式改成指纹认证方式。
只需要再一个地方改变认证方式即可,其它目标站点无需知道源站点的认证方式的修改,因为底层SAML断言不变。

(2)Web Services Manager, Oracle提供的用于确保服务的安全性、可靠性。
好处:服务开发人员专注于业务逻辑的实现。
安全专家专注于服务的安全设计,保证服务的安全访问。
服务的安全策略集中化管理,而不是分散到每个服务之中。

(3)WS-Policy:对服务的断言,描述了服务提供者要求服务请求者必须提供一些信息。(由W3C制定)
策略断言:传输协议,安全性,事务性,可靠性。
WS-Policy只是一个框架,为特定的域定义一套特定的策略断言则是系统管理员的任务。

(4)WS-Security:(由OASIS制定)
WS-Security规范主要描述了如何将XML Signature和XML Encryption与已有的安全技术(Kerberos,X.509,SAML)结合, 并把它们绑定到SOAP中。
与HTTPS的区别:
a.HTTPS提供的是点对点安全保护,而Web Services应用的一个特点就是消息往往就要经过多个中介才能到达最终的服务提供方,每个中介都有可能对消息做出些处理,也就是说它需要的是端到端的保护。这显然是HTTPS所无法提供的。
b. HTTPS是在传输层提供安全保障的,而不是在消息层,也就是说消息只有在传输过程中才是安全的(加密的),而一旦到达了终点后就不再安全了。恶意攻击者可以从消息队列中将重要的信息窃取出来。
c. HTTPS分配好共享密钥后,传递消息的时候并没有使用数字签名技术,此时传递的消息也就无法获得抗否认性的能力。而这一项功能恰恰是在电子商务中不可豁缺的。
d. 由于HTTPS提供的是传输层的安全,当然也就不可能达到消息安全所需要的灵活性的要求。例如加密消息中的部分元素;使用不同的密钥加密消息的不同部分,从而让不同的消息接收者查看与之对应的信息。

(5)SLA:Service Level Agreements. 服务品质协议。
是服务提供者和使用者之间的一个正式合同,用来保证可计量的网络性能达到所规定的品质。
精确定义:服务提供时间百分比;服务平均响应时间;出现故障时的平均响应时间;无法满足时赔偿;退出条款。

(6)QoS:Quality of Service. 服务质量。
是指网络提供更高优先服务的一种能力,包括专用带宽、抖动控制和延迟(用于实时和交互式流量情形)、
丢包率的改进以及不同WAN、LAN 和 MAN 技术下的指定网络流量等,同时确保为每种流量提供的优先权不会阻碍其它流量的进程。

(7)XML Signature: 保证XML消息的完整性(Integrity),确保消息在传输的过程中没有被修改。
通常会对消息做摘要(Digest),再使用密钥(对称,非对称)加密摘要,从而保证消息的完整性。
可以对任一元素、任一资源(URI所指向的资源:图片,其它XML)签名,也可以对整个文件签名。 标准化处理:XML文件的特殊性,元素的属性位置调换不代表该XML文件完整性被破坏;换行符在不同平台下的字符不同。
签名过程:定位资源作必要转换(二进制转换成Base64编码)做摘要标准化处理用私钥签名标准化后的摘要。

(8)XML Encryption: 保证XML消息的机密性(Confidentiality)
可以对任一元素、任一资源(URI所指向的资源:图片,其它XML)加密,也可以对整个文件加密。
通常使用对称密钥加密消息。
为了保证对称密钥的安全性,消息发送方使用消息接收方的公钥加密对称密钥,消息接收方使用自己的私钥解密出对称密钥。

(9)身份鉴别(Authentication):确保消息发送者的身份与消息中所声称的用户身份一致。
a. UsernameToken:
使用用户名和密码来验证用户的身份是最普通也最常见的方法。
用户在发送请求的时候,在SOAP HEAD中加入自己的用户名以及密码。
消息接收者通过之前与消息发送者建立的共享密码来验证密码的合法性从而实现鉴别用户的功能。
实现原理:消息发送者随机产生了一个对称密钥并用它来加密和签名SOAP Envelop中的元素(如UsernameToken ),然后通过使用消息接收者的公钥来加密该对称密钥,从而达到验证消息完整性,解密数据以及鉴别用户身份的目的。

Q: 在SOAP包中传输密码怎么保证密码的安全性?
A: 使用密钥加密,只有接受方能解密密码。
Q: 怎么从用户名密码中获得签名和加密所需要的密钥?
A: 随机产生密钥,并通过接受方的公钥加密,保证密钥不被别人所知。
Q: 如何避免重放攻击? A: 由于其他人无法获得密钥,所以即便截获消息也无法冒充。
Q: 直接使用密码派生密钥被破解了怎么办? A: 密钥不再从密码派生,而是每次随机产生,即便被破解也不会影响其他的消息和其他的服务。
Q: 用户密码必须以明文形式保存在服务端?
A: 由于密码被加密而不是做摘要所以不需要服务端拥有明文密码。

b. BinaryToken KerberosToken X.509Token

3. 流程编制层:功能 编制服务
BPEL: Business Process Execution Language 业务流程执行语言
作用: 将现有的服务组合起来,生成一个新的服务。BPEL是一种实现服务组合的语言。
有哪些组合:
(1)控制流(条件分支、循环、并行)
(2)异步操作
(3)错误处理、异常处理、补偿处理逻辑
(4)长事务处理

4. 用户界面层:功能 开发用户界面 保证跨浏览器、跨平台的外观一致。
(1)WSRP(Web Services for Remote Portlets),一个定义了如何利用基于 SOAP 的 Web 服务在门户应用程序中生成标记片断的规范。
通过定义一组公共接口,WSRP 允许门户在它们的页面中显示远程运行的 portlet,而不需要门户开发人员进行任何编程。
对于最终用户,这些 porlet 就和运行在他们本地的门户上一样,但是实际上这些 portlet 来自于远程运行的 portlet 容器,并且是通过 SOAP 消息的来交互的。
在面向服务的体系结构中利用 WSRP 将是一个强大的组合,从而使面向呈现的 portlet 应用程序可以被发现并重用而不用任何额外的开发和部署活动。

(2)JSR-168:开发portlet的Java API。

好处:可移植性,容易在门户服务器之间移动。

5. 监控层:监控、分析、并作出一定的响应(不仅仅是监控)
(1)如何实现粗(细)粒度的实时监控?
细粒度:每一个业务流程实例
粗粒度:更高层次的业务活动
监控: KPI
分析:关键的业务环节,当前各个环节有多少个负载,每个环节平均响应时间,确定瓶颈
响应:定制各种仪表面板,警报,是否采取行动(手动/自动)
不同角度视图:销售部门,运营部门,CEO。

(2)JMX Java Management Extensions,Java管理扩展框架
是一个为应用程序、设备、系统等植入管理功能的框架。
可以跨越一系列异构操作系统、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

没有评论: