web.xml 配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml,
/WEB-INF/xfire-servlet.xml,
classpath:org/codehaus/xfire/spring/xfire.xml
</param-value>
</context-param>
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>11</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
xfire-servlet.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/userServiceWSS4JUsernameToken">
<ref bean="userServiceWSS4JUsernameToken" />
</entry>
</map>
</property>
</bean>
<bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler" />
<bean id="wss4jInHandlerUsernameToken" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
<property name="properties">
<props>
<prop key="action">UsernameToken</prop>
<prop key="passwordCallbackClass">com.wine.ws.handler.PassWordHandler</prop>
</props>
</property>
</bean>
<bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory"/>
</property>
<property name="xfire">
<ref bean="xfire"/>
</property>
</bean>
<bean id="userServiceWSS4JUsernameToken" parent="baseWebService">
<property name="serviceBean" ref="userWebService"/>
<property name="serviceClass" value="com.wine.service.IUserWebService"/>
<property name="name" value="userServiceWSS4JUsernameToken"></property>
<property name="inHandlers">
<list>
<ref bean="domInHandler"/>
<ref bean="wss4jInHandlerUsernameToken"/>
</list>
</property>
</bean>
</beans>
验证
public class PassWordHandler implements CallbackHandler {
private static Map<String,String> users = new HashMap<String,String>();
static {
users.put(WSPropertiesReader.getUserName(), WSPropertiesReader.getPassword());
}
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];
String id = callback.getIdentifer();
if(WSConstants.PASSWORD_TEXT.equals(callback.getPasswordType())){
String validPW = users.get(id);
if(validPW == null || !validPW.equalsIgnoreCase(callback.getPassword())){
throw new WSSecurityException("password not match ......");
}
} else {
callback.setPassword(users.get(id));
}
}
}
客户端实现
public class Test {
private static XFireProxyFactory xFireProxyFactory=new XFireProxyFactory();
public static void main(String[] args) throws Exception {
Service service=new ObjectServiceFactory().create(IUserWebService.class);
String url="http://localhost:8080/dc/services/userServiceWSS4JUsernameToken";
IUserWebService userWebService=(IUserWebService) xFireProxyFactory.create(service,url);
Client client=((XFireProxy) Proxy.getInvocationHandler(userWebService)).getClient();
client.addOutHandler(new DOMOutHandler());
Properties properties=new Properties();
properties.setProperty(WSHandlerConstants.ACTION,WSHandlerConstants.USERNAME_TOKEN);
properties.setProperty(WSHandlerConstants.PASSWORD_TYPE,WSConstants.PW_DIGEST);
properties.setProperty(WSHandlerConstants.USER,"feng");
properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS,PassWordHandler.class.getName());
client.addOutHandler(new WSS4JOutHandler(properties));
System.out.println("xxxxxxxxxxxx"+userWebService.isValidSession("a"));
}
}
分享到:
相关推荐
标题中的"Spring+xFire+wss4j配置Helloworld完整Demo"揭示了这是一个关于整合Spring框架、xFire(现称为Apache CXF)和WSS4J的安全Web服务示例项目。这个项目旨在帮助开发者理解如何在Spring环境中配置并实现一个...
在本教程中,我们将深入探讨如何使用Spring框架与xFire集成,同时利用wss4j进行WS-Security安全配置,创建一个"Hello World"的Web服务。这是一个完整的MyEclipse项目,包括服务端和客户端的工程,旨在帮助开发者快速...
许多的相关示例根本不能运行,这个示例不单能直接运行,而且还有教程,见 http://blog.csdn.net/guosydragon/archive/2010/05/01/5549076.aspx及相关章节
7. **wss4j-1.5.1.jar**:Web Services Security (WSS4J)提供了SOAP消息的安全处理,包括签名和加密。 8. **wstx-asl-3.2.0.jar**:Woodstox是一个高性能的XML流解析器和生成器,它用于解析和生成XML流数据。 9. *...
wss4j-1.5.0.jar wstx-asl-3.2.9.jar xbean-spring-2.8.jar xfire-all-1.2.6.jar xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.6.jar xml-apis-1.0.b2.jar XmlSchema-1.1.jar xmlsec-1.3.0.jar
在XFire中,我们可以利用WSS4J库来实现这些功能。WSS4J提供了API来设置安全策略,如添加用户名令牌、数字签名或消息加密。 为了启用WS-Security,我们需要在`xfire.xml`配置文件中定义安全策略。例如,我们可以配置...
8. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J)是一个用于处理Web服务安全的库,它支持WS-Security和其他相关的安全标准,确保Web服务之间的通信安全。 9. **wstx-asl-3.2.3.jar**:这是一个升级...
5. **xmlsec-1.3.0.jar**:XML Security Library,提供了对XML加密和签名的支持,与wss4j配合用于实现Web服务的安全功能。 6. **commons-httpclient-3.0.jar**:Apache Commons HttpClient,提供了一套高级HTTP...
2. wss4j-1.5.1.jar:这个是Web Services Security for Java的库,用于提供Web服务的安全性,如数字签名、消息加密等。在使用xfire进行Web服务交互时,可能会用到这个库来确保通信的安全性。 3. wstx-asl-3.2.0.jar...
7. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J) 是Apache CXF项目的一部分,用于处理Web服务的安全性,如数字签名和加密等。 8. **wstx-asl-3.2.0.jar**:Woodstox是高性能的StAX(Streaming API...
4. wss4j-1.5.1.jar:Web Services Security for Java,提供了安全相关的API,如数字签名、加密和身份验证。 5. wstx-asl-3.2.0.jar:Woodstox XML处理器,提供高效的XML解析和生成。 6. jetty-6.1.2rc0.jar:Jetty...
5. **wss4j-1.5.1.jar**:Web Services Security for Java,提供安全相关的支持,如数字签名和加密,确保Web服务的安全通信。 6. **wstx-asl-3.2.0.jar**:Woodstox,一个高效的XML流解析器和生成器,用于处理XML...
- `wss4j-1.5.1.jar`:Web Services Security for Java (WSS4J) 是Apache提供的一套安全库,用于实现SOAP消息的安全传输。 - `wsdl4j-1.6.1.jar`:包含了处理WSDL文档的库,Spring WS等工具会使用这个库解析和操作...
5. `wss4j-1.5.1.jar`:Web Services Security for Java,用于处理Web服务的安全性。 6. `wstx-asl-3.2.0.jar`:Woodstox,一个高效的XML处理器,可以处理XML输入和输出。 7. `velocity-1.6.jar`:Velocity,一个...
8. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J) 是Apache提供的一个安全库,它为SOAP消息提供了安全功能,如签名、加密、以及WS-Security标准的支持。 9. **wstx-asl-3.2.0.jar**:Woodstox是...
- `wss4j-1.5.11.jar`:Web Services Security for Java,用于实现WS-Security标准,提供安全机制。 - `stringtemplate-3.2.jar`:StringTemplate是一个模板引擎,用于生成文本输出,如XML或HTML。 - `wsdl4j-...
- **安全认证**:CXF 支持多种安全机制,包括消息头拦截器、WSS4J 和 X509 证书,确保服务的安全通信。 在演示环境中,我们使用 MyEclipse IDE、Tomcat 6 作为应用服务器,以及 CXF 版本为 2.5.5。从 CXF 官网...