在每次客户端发送消息前(beforeserialize 阶段),根据其配置文件指定的标志来决定是否进行加密,并新增一个扩展 soapheader 到当前 soap 包的消息头列表中,该扩展的 soapheader 用来指示接受者该 soap 包是否经过加密与数字签名.在 afterserialize 阶段就根据指示对 soap 消息包进行加密.服务器端,在 beforedeserialize 阶段,先获取扩展 soapheader 对象,根据其指示来决定对接收到的 soap 消息包进行解密.
【程序编程相关:HTML教程(7)-插入图形】解决 【推荐阅读:HTML教程(6)-件之间的链接】
【扩展信息:HTML教程(8)-播放音乐】==== 该方案忽略了一个事实,那就是 soapheader 是处在 soap 消息包中的,如果对整个 soap 消息包进行加密,则无法在解密整个 soap 消息之前先获得 soapheader,不过,这并不妨碍该方案的实施.第一,不要加密整个 soap 消息包,而只加密 soap 消息包的主体(body)部分;
这个解决办法有个不好的地方就是不能对 soapheader 进行保密,故此,最好不要用 soapheader 来保存与传输机要数据.第二,还是加密整个 soap 消息包,只不过是使用自定义的 httpheader 来标示当前附带的 soap 消息包的加密状态.
这种解决方案的不足之处是依赖于特定的传输层协议.当然,也可以自定义一种格式,将指示消息包加密状态的标识放在消息主体中,在接收到该消息包时,先解析其指示值后再进行后续操作. 我使用的是第二种解决方案(即 使用 http 标头来标识 soap 消息包的加密状态).... 下一页