影响 ESB 的安全问题
我不想在这里直接提出安全需求,不过它们对选择 ESB 的实现技术非常重要。例如,如果服务请求不需要提供身份验证或授权,实现技术的选择就可以非常的广泛。更有可能的情况是,如果需要一些安全级别,则评估什么形式的安全是可以接受的就非常重要。例如:
1.是否可以接受通信基础架构中的安全性,例如,是否在 EAI 中间件服务器之间使用安全套接字层(Secure Socket Layer,SSL)互相验证,或者是否在使用 HTTPS 协议?
2.是否可以接受在参与系统之间单独的点到点(point-to-point)安全性,或者是否需要端到端(end-to-end)模型?例如,是否有必要通过类似于代理的中间件系统来把客户端身份传递到服务实现的最终提供者?
3.是否可以接受应用层中的安全性,例如,客户端代码是否能够执行带有用户 ID 和密码的基本 HTTP 身份验证,或者是否能够把这些信息作为应用程序数据传递给服务?
4.是否需要遵守行业安全标准,例如 Kerberos 或 WS-Security?
虽然所有这些都是可能的,但是行业的发展方向是基础架构和中间件支持的符合标准的安全性(例如 Web 服务安全性(WS-Security))功能。然而,相比之下,这些安全标准也是最近才提出的,而且对它们的产品支持仍在发展的过程中,而不是已经确定了,这里尤其需要特别考虑的就是它们的互操作性。因此,任何 ESB 架构都需要尽可能早地确定安全需求,以便在选择实现技术时可以将它们包括进来。
结束语
在本文中,讨论了大多数通用的 SOA 原则,以及它们与 Web 服务技术的关联。基于这些原则,我提出了需要一个基础架构组件,这个组件可以提供路由功能,以便使服务能够彼此交互,同时还能够支持使用另一个服务实现来替换原有的服务实现。这些功能都是通过 ESB 实现的。
ESB 在维持集中控制的同时提供分布式的基础架构,因而需要一些形式的服务路由目录,并且还可能需要业务服务目录。Business Service Choreographer 从 ESB 调用服务,然后通过 ESB 把这些流程作为新的服务公开。
ESB 的许多功能包括提供:
1.通信
2.服务交互
3.集成
4.质量服务
5.安全
6.服务级别
7.消息处理
8.管理及自治服务
9.建模
10.基础架构智能
从这些不同的功能中,我确定了建立 ESB 所需的最低功能,包括通信、集成和服务交互。