安全对于 web services 来讲至关重要。但是,不管是 xml-rpc 还是 soap 规范都没有做任何明确的安全或认证要求。

有三个特定的与 web services 相关的安全问题:

保密性认证

保密性

如果一个客户端发送一个 xml 请求到一台服务器,我们能否保证通信过程的保密性?

答案在这里:

xml-rpc 和 soap 主要运行于 http 之上http 支持 ssl通信可以通过 ssl 进行ssl 是一个久经考验并被广泛应用的技术单个的 web service 可能会由一系列的应用组成。例如,一个大型服务可能会把三个其他应用的服务捆绑在一起。在这种情况下,ssl 是不够的;每个服务路径的节点都需要对消息进行加密,每个节点都代表一个潜在的薄弱的环节。目前为止还没有就此问题达成一个一致的解决方案,但是一个很有前景的解决方案是 w3c xml 加密标准。这一标准为整个或部分 xml 文档的加密和解密提供了一个框架。

认证

如果一个客户端连接到一个 web service,我们该如何识别用户?该用户被授权使用服务了吗?

可以考虑以下选项,但目前还没有达成一个明确的强大授权方案。

http 包含内置基本和摘要式身份验证支持,因此服务可以像目前 html 文档的保护那样进行保护。soap 数字签名(soap-dsig)使用公钥来对 soap 消息进行数字签名。它允许客户端或服务器端验证对方的身份。结构化信息标准促进组织(oasis)目前正致力于安全断言标记语言(saml)的研发。

网络安全

这个问题目前还没有一个轻松的答案,它一直是有一个具有争议的问题。目前,如果你真想对 soap 或者 xml-rpc 消息进行过滤,一个可行的办法就是去将所有 http post 请求进行过滤,将其内容类型设置为 text/xml。

另外一个选择是过滤 soapaction 的 http 头属性。防火墙厂商们目前也在致力于用于过滤 web service 流量的工具的开发。