Java Web 服务: WS-Security 的大开销
2009-11-05 00:00:00 来源:WEB开发网plain:无安全性
ssl:使用 HTTPS 连接到服务器
username:请求中使用 WS-Security 纯文本 UsernameToken
sign:WS-Security 主体和报头签名,使用时间戳
encr:WS-Security 主体加密
signencr:WS-Security 主体和报头签名,使用时间戳和主体加密
实际测试时间从 plain 配置的 4 秒到 signencr 配置的 55 秒。图 1 显示了相对测试时间,为便于比较使用了相对 plain 配置时间的倍数:
图 1. 测试时间比较
从 图 1 中可以看出,Secure Sockets Layer (SSL) — 从技术上说,现在应该称作 Transport Layer Security (TLS),但本文仍然使用为人所熟知的旧表示方法 — 加密所提供的性能接近无保护措施时的性能水平(但其处理大消息比处理小消息的性能要好,处理小消息所花的时间要长 80%,处理大消息所花的时间要长 20%)。另一方面,使用 WS-Security 会造成性能显著降低。仅在请求消息上添加简单的 UsernameToken 报头会造成性能降低到 SSL 处理小消息时的性能水平,但比使用 SLL 处理大消息时的性能慢 几倍。在签名与加密相结合的情况下,测试时间比无保护措施下要长 2,100%。
从一定程序上说,WS-Security 带来的这种性能上的影响归因于 Rampart 处理程序实现的缺陷,这会造成每次有 Rampart 参与时都将各请求和响应消息转换成 Document Object Model (DOM) 格式(即使未对消息执行任何安全性处理)。应该在 Rampart 1.5 发行版中修复此问题以便它可以兼容 Axis2 1.5。根据修复的实现方式,它可以显著改善 UsernameToken 测试的运行时间。但是,即使修复了此问题可能也不会影响其他的 WS-Security 运行时间。
更多精彩
赞助商链接