0 0

CXF WebService 安全性通信0

最近自己在学习CXFWebService,现在服务端发布成功,客户端也能成功调用。我没用Spring发布,通过JaxWsServerFactoryBean 发布的,现在面临的问题就是,如何保证客户端的调用安全性,只允许通过验证的客户端调用我的服务,我的问题就是这个验证应该怎么做。虚心向大家学习下,我也是刚刚接触WebService,希望大家能提供下帮助,谢谢了!
2013年8月23日 00:36

2个答案 按时间排序 按投票排序

0 0

采纳的答案

用WSS4J的安全handler处理即可。
服务端定义:

	<bean id="WSS4JInInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
		<constructor-arg>
			<map>
				<entry key="action" value="UsernameToken"/>
              	<entry key="passwordType" value="PasswordText"/>
                <entry key="user" value="wsbs"/>
                <entry key="passwordCallbackRef">
                	<ref bean="serverPasswordCallback"/>
                </entry>
			</map>
		</constructor-arg>
	</bean>
	<bean id="serverPasswordCallback" class="实际的包路径.ServerPasswordCallback"/>
	<jaxws:server id="register" serviceClass="服务接口" address="/register">
		<jaxws:serviceBean>
			<ref bean="服务实现类的bean"/>
		</jaxws:serviceBean>
		<jaxws:inInterceptors>
			<ref bean="inLoggingInterceptor"/>
			<ref bean="WSS4JInInterceptor"/>
		</jaxws:inInterceptors>
		<jaxws:outInterceptors>
			<ref bean="outLoggingInterceptor"/>
		</jaxws:outInterceptors>
	</jaxws:server>

注意:ServerPasswordCallback实现CallbackHandler接口
import java.io.IOException;

import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;

import org.apache.ws.security.WSPasswordCallback;

public class ServerPasswordCallback implements CallbackHandler {
	@Override
	public void handle(Callback[] callbacks) throws IOException,
			UnsupportedCallbackException {
		WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
		if("wsbs".equals(pc.getIdentifier())){
			pc.setPassword("111111");
		}
	}

}


客户端调用:
调用时,需要增加输出的WSS4J的拦截,如:
JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();  
	    bean.getInInterceptors().add(new LoggingInInterceptor());  
		bean.getInFaultInterceptors().add(new LoggingOutInterceptor());
		bean.setServiceClass(getServiceClass());
		bean.setAddress(url + getServiceURI());
		log.info(bean.getAddress());
		Object proxy = bean.create();
		ClientProxy clientProxy = (ClientProxy)Proxy.getInvocationHandler(proxy);
		Client client = clientProxy.getClient();
		client.getOutInterceptors().add(new SAAJOutInterceptor());
		client.getOutInterceptors().add(new WSS4JOutInterceptor(environment));

注意:environment为HashMap的对象,用于设置环境变量
		environment.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
		environment.put(WSHandlerConstants.USER, Config.getProperty(REMOTE_USER));
		environment.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
		environment.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordHandler.class.getName());

ClientPasswordHandler与ServerPasswordCallback写法类似。

网上有一些例子,你参考一下,应该差不多

2013年8月23日 07:33
0 0

安全性可以通过添加一个 Interceptor 来实现,参考下面的代码:

HelloWorldImpl implementor = new HelloWorldImpl();
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setServiceClass(HelloWorld.class);
svrFactory.setAddress("http://localhost:9000/helloWorld");
svrFactory.setServiceBean(implementor);
svrFactory.getInInterceptors().add(new LoggingInInterceptor());
svrFactory.getOutInterceptors().add(new LoggingOutInterceptor());
svrFactory.create();


另外可参考:
http://dyccsxg.iteye.com/blog/1905440
http://dyccsxg.iteye.com/blog/1905439
http://dyccsxg.iteye.com/blog/1905438

2013年8月25日 12:09

相关推荐

    CXF webService 工具类

    - **安全性**:CXF提供了多种安全机制,如WS-Security、OAuth等,确保Web服务的安全通信。 3. **CXF工具类的作用** - **服务配置**:工具类可以协助设置和管理服务端点,如URL、端口等。 - **服务发布**:简化...

    webService(基于cxf)的完整例子

    8. **安全与认证**:CXF支持多种安全机制,包括基本认证、digest认证、WS-Security等,确保Web服务的安全性。开发者可以根据需要添加相应的安全配置。 9. **错误处理与日志**:CXF提供了详细的错误处理机制和日志...

    spring+CXF实现WebService(http+https)

    在IT行业中,Web服务是一种广泛使用的通信...总结来说,本教程涵盖了如何使用Spring和CXF构建Web服务,以及如何配置HTTPS以确保通信的安全性。这将帮助开发者搭建可靠且安全的分布式系统,实现不同应用之间的数据交互。

    CXF WebService带有拦截器

    为了增强安全性,我们还可以考虑使用CXF的WS-Security组件,它可以支持各种安全标准,如WS-Trust、WS-SecureConversation等,提供更强的身份验证和加密机制。此外,结合Spring Security等框架,我们可以进一步实现细...

    CXF WEBSERVICE

    在实际应用中,CXF与Spring的集成还能实现更高级的功能,如安全性配置、消息转换、异常处理等。例如,你可以使用Spring Security来保护你的Web服务,或者通过CXF的 interceptors 来自定义消息处理逻辑。 总的来说,...

    cxf webservice 文件分块上传

    总的来说,通过CXF Webservice实现文件分块上传是一个复杂但实用的系统设计,它结合了网络通信、文件操作、错误处理和安全性等多个方面的知识,对于提升大型文件传输的效率和可靠性具有重要意义。

    cxf webservice所需jar包

    8. **安全性**: - CXF提供了多种安全模型,包括基本认证、证书认证、WS-Security等,确保Web服务的安全通信。 9. **拦截器和 phases**: - CXF使用拦截器模型,允许在请求和响应的过程中插入自定义逻辑。这些...

    SSH整合cxf webservice实例

    我们可以为CXF服务中的业务方法添加事务控制,以确保数据操作的原子性和一致性。在Spring配置文件中定义Hibernate的SessionFactory,并配置事务管理器: ```xml &lt;!-- Hibernate配置 --&gt; ``` 5. **...

    WebService开发客户端 cxf方式

    2. **安全性**:CXF提供多种安全机制,如SSL/TLS加密、WS-Security(Web Services Security)支持,可以实现身份验证、消息完整性及保密性。 3. **拦截器和插件**:CXF允许自定义拦截器和插件,扩展服务行为,如...

    cxf开发webservice所用jar包

    这个标题“cxf开发webservice所用jar包”表明我们正在讨论一组CXF框架所需的JAR文件,这些文件对于利用CXF开发基于Web服务的应用程序至关重要。在描述中提到“cxf-2.4.1整合spring3.0所用jar包”,这暗示了我们使用...

    CXF webService所需要的jar包

    综上所述,这些jar包构成了CXF运行Web服务所需的基本环境,涵盖了Web服务的核心功能,如协议处理、安全性、数据绑定和通信机制。在开发或部署基于CXF的Web服务时,确保这些依赖项正确配置和包含在类路径中是非常重要...

    使用cxf的webservice安全验证

    在IT行业中,Web服务安全验证是确保数据传输过程中的安全性和隐私性的重要环节。CXF是一个流行的开源Java框架,用于创建和消费Web服务。本文将深入探讨如何在使用CXF时实现Web服务的安全验证。 首先,理解CXF的背景...

    cxf webservice+spring+mybatis 整合(含Jar包)

    同时,通过CXF的拦截器(Interceptor)机制,我们可以实现对服务请求和响应的拦截、日志记录、权限验证等功能,提高了服务的安全性和可维护性。 Spring 是一个全面的Java企业级应用开发框架,它提供了强大的依赖...

    cxf webservice示例代码

    在实际应用中,开发者可能会遇到如版本兼容性、错误处理、安全性(如SSL/TLS加密)等问题。CXF提供了一些高级特性来解决这些问题,例如WS-Security(Web服务安全)支持、MTOM(Message Transmission Optimization ...

    CXF webservice 动态地址客户端相关代码和jar包

    8. **安全性**:考虑到服务地址的动态性,客户端的安全配置也需灵活。可能需要支持动态更新证书、密钥或安全协议,以适应不同环境下的安全需求。 9. **测试和调试**:在开发过程中,使用动态地址的客户端可能需要更...

    Spring+CXF 发布WebService服务

    5. **安全和拦截器**:如果需要,可以在Spring配置中添加安全策略和拦截器,例如WS-Security或自定义的日志拦截器,以增强服务的安全性和监控能力。 6. **RESTful服务**:CXF还支持创建RESTful服务,只需使用`...

    纯java调用ws-security+CXF实现的webservice安全接口

    6. **测试调用**:最后,你可以通过CXF客户端调用Web服务接口,此时ws-security的设置将会自动应用到请求中,保证了调用的安全性。 在提供的压缩包文件"WsClient"中,可能包含了实现以上步骤的示例代码,例如Java...

    CXF webservice初学笔记

    在学习CXF Webservice时,你需要理解上述组件的作用,并掌握如何配置和使用CXF来创建服务端点、客户端代理,以及如何进行数据绑定、错误处理和安全性设置。实践项目是加深理解的好方法,可以参考提供的博文链接,...

    使用cxf和spring开发基于https的webservice服务端以及客户端样例

    总的来说,通过Apache CXF和Spring框架,我们可以轻松地构建基于HTTPS的Web服务,确保数据传输的安全性。理解并掌握这种开发方式对于任何涉及Web服务交互的Java开发者都至关重要。同时,对于理解和实施安全通信标准...

    WebService cxf

    - **安全性**:提供SSL/TLS加密、WS-Security等安全特性,保障服务的安全通信。 - **数据绑定**:支持JAXB(Java Architecture for XML Binding)进行对象到XML的自动转换,简化数据交换过程。 对于开发者而言,...

Global site tag (gtag.js) - Google Analytics