WebService编程详解之安全应用

一、概述

CXF 的 WS-Security 实现基于开放源码的 WSS4J 库。Axis2 代码也使用这个库,因此这两个堆栈的 WS-Security 配置细节有一些相似之处。但是,通过解释 WS-SecurityPolicy 配置 WSS4J 的代码层不一样。在 Axis2 中这由单独发布的 Rampart 模块处理,而在 CXF 中由 cxf-rt-ws-policy 和 cxf-rt-ws-security 模块处理(这些模块包含在标准的 cxf-#.jar 中,其中的 #是版本号)。

WS-Security提供了一些方法保证你的服务安全,常用的有以下方法:

      ①在两个服务之间传递授权标识。

      ②加密传递的信息或加密传递信息中重要部分。

      ③对传递的信息进行数字签名

      ④Timestamp messages

当前,CXF通过整合WSS4J实现WS-Security,为了能够使用这个整合,我们需要配置一些interceptors(拦截器)并且将他们安装到服务端或客户端。

二、WSS4J是什么?主要使用来做什么的?

WSS4J是一个OASIS Web服务安全实现,他是一个重要的Java库,主要用来签名和验证SOAP信息通过WS-Security信息。它主要的用途有:XML签名、XML加密和用户令牌(Username Tokens)、Timestamps、SAML Tokens。并且WSS4J支持X.509证书和证书路径。如果要想详细了解,请看他的doc: http://ws.apache.org/wss4j/api.html

常用方法简介:

①SOAPEnvelope数字签名:


②SOAPEnvelope加密:


③用户授权


④例子:




三、通过采用Spring XML 配置WSS4J拦截器(interceptors)实现

(1)授权服务

(2)数字签名服务

(3)加密服务

如果你的服务是通过Spring建立的,那么通过配置Spring XML文件很容易配置WSS4J拦截器。在CXF官方文档中讲解了两种配置方式,分别是原始的WS-Security配置和WS-SecurityPlolicy配置,其中WS-SecurityPolicy是WS-Security的替代品,他提供更简单更标准的方式配置security。并且在WS-Security中的后台元素在WS-SecurityPolicy中仍然有效,并且有时需要去了解。

WS-SecurityPolicy配置说明如下:

    ① ws-security.username—用户名(UsernameToken中应用)

    ②WS-Security.password—密码(UsernameToken中应用),如果没有指定,就会调用callback Handler。

    ③ws-security.callback-handler—WSS4J安全处理Handler,通常用来检索密码为Keystores或者为UsernameToken。

    ④ws-security.signature.properties—数字签名配置文件,通常用来配置签名的Keystore和密钥对象。

    ⑤ws-security.encryption.properties—加密配置文件。通常用来配置签名的Keystore和密钥对象。

    ⑥ws-security.signature.username—KeyStore中的密钥别名(用来进行签名)如果在Spring中没有配置,将会查找配置文件中的配置的别名,如果在配置文件中没有配置,并且在KeyStore中仅包含一个密钥,那么就会用这个密钥。

    ⑦ws-security.encryption.username-- KeyStore中的密钥别名(用来进行加密)如果在Spring中没有配置,将会查找配置文件中的配置的别名,如果在配置文件中没有配置,并且在KeyStore中仅包含一个密钥,那么就会用这个密钥。如果在服务器端设置为useReqSigCert,这表示应该使用请求签名所用的客户机证书对响应进行加密。使用这个设置让服务器代码可以处理多个客户机,每个客户机有自己的证书。

    ⑧ws-security.signature.crypto—代替签名配置文件,它能够指向密钥对象。它允许更容易的密钥信息配置方案。

    ⑨ws-security.encryption.crypto--代替加密配置文件,它能够指向密钥对象。它允许更容易的密钥信息配置方案

UsernameToken 是向 WS-Security 提供用户名和密码对的标准方法。可以以明文形式发送密码信息,也可以以散列值形式(经过加密处理)发送。它对于需要直接身份验证的许多应用程序很方便。

例子如下

    Spring XML配置文件如下:


     常用配置文件如下:

有关Spring中配置简介,例子如下


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值