-
CXF WebService 安全性通信0
最近自己在学习CXFWebService,现在服务端发布成功,客户端也能成功调用。我没用Spring发布,通过JaxWsServerFactoryBean 发布的,现在面临的问题就是,如何保证客户端的调用安全性,只允许通过验证的客户端调用我的服务,我的问题就是这个验证应该怎么做。虚心向大家学习下,我也是刚刚接触WebService,希望大家能提供下帮助,谢谢了!2013年8月23日 00:36
2个答案 按时间排序 按投票排序
-
采纳的答案
用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
-
安全性可以通过添加一个 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/19054382013年8月25日 12:09
相关推荐
- **安全性**:CXF提供了多种安全机制,如WS-Security、OAuth等,确保Web服务的安全通信。 3. **CXF工具类的作用** - **服务配置**:工具类可以协助设置和管理服务端点,如URL、端口等。 - **服务发布**:简化...
8. **安全与认证**:CXF支持多种安全机制,包括基本认证、digest认证、WS-Security等,确保Web服务的安全性。开发者可以根据需要添加相应的安全配置。 9. **错误处理与日志**:CXF提供了详细的错误处理机制和日志...
在IT行业中,Web服务是一种广泛使用的通信...总结来说,本教程涵盖了如何使用Spring和CXF构建Web服务,以及如何配置HTTPS以确保通信的安全性。这将帮助开发者搭建可靠且安全的分布式系统,实现不同应用之间的数据交互。
为了增强安全性,我们还可以考虑使用CXF的WS-Security组件,它可以支持各种安全标准,如WS-Trust、WS-SecureConversation等,提供更强的身份验证和加密机制。此外,结合Spring Security等框架,我们可以进一步实现细...
在实际应用中,CXF与Spring的集成还能实现更高级的功能,如安全性配置、消息转换、异常处理等。例如,你可以使用Spring Security来保护你的Web服务,或者通过CXF的 interceptors 来自定义消息处理逻辑。 总的来说,...
总的来说,通过CXF Webservice实现文件分块上传是一个复杂但实用的系统设计,它结合了网络通信、文件操作、错误处理和安全性等多个方面的知识,对于提升大型文件传输的效率和可靠性具有重要意义。
8. **安全性**: - CXF提供了多种安全模型,包括基本认证、证书认证、WS-Security等,确保Web服务的安全通信。 9. **拦截器和 phases**: - CXF使用拦截器模型,允许在请求和响应的过程中插入自定义逻辑。这些...
我们可以为CXF服务中的业务方法添加事务控制,以确保数据操作的原子性和一致性。在Spring配置文件中定义Hibernate的SessionFactory,并配置事务管理器: ```xml <!-- Hibernate配置 --> ``` 5. **...
2. **安全性**:CXF提供多种安全机制,如SSL/TLS加密、WS-Security(Web Services Security)支持,可以实现身份验证、消息完整性及保密性。 3. **拦截器和插件**:CXF允许自定义拦截器和插件,扩展服务行为,如...
这个标题“cxf开发webservice所用jar包”表明我们正在讨论一组CXF框架所需的JAR文件,这些文件对于利用CXF开发基于Web服务的应用程序至关重要。在描述中提到“cxf-2.4.1整合spring3.0所用jar包”,这暗示了我们使用...
综上所述,这些jar包构成了CXF运行Web服务所需的基本环境,涵盖了Web服务的核心功能,如协议处理、安全性、数据绑定和通信机制。在开发或部署基于CXF的Web服务时,确保这些依赖项正确配置和包含在类路径中是非常重要...
在IT行业中,Web服务安全验证是确保数据传输过程中的安全性和隐私性的重要环节。CXF是一个流行的开源Java框架,用于创建和消费Web服务。本文将深入探讨如何在使用CXF时实现Web服务的安全验证。 首先,理解CXF的背景...
同时,通过CXF的拦截器(Interceptor)机制,我们可以实现对服务请求和响应的拦截、日志记录、权限验证等功能,提高了服务的安全性和可维护性。 Spring 是一个全面的Java企业级应用开发框架,它提供了强大的依赖...
在实际应用中,开发者可能会遇到如版本兼容性、错误处理、安全性(如SSL/TLS加密)等问题。CXF提供了一些高级特性来解决这些问题,例如WS-Security(Web服务安全)支持、MTOM(Message Transmission Optimization ...
8. **安全性**:考虑到服务地址的动态性,客户端的安全配置也需灵活。可能需要支持动态更新证书、密钥或安全协议,以适应不同环境下的安全需求。 9. **测试和调试**:在开发过程中,使用动态地址的客户端可能需要更...
5. **安全和拦截器**:如果需要,可以在Spring配置中添加安全策略和拦截器,例如WS-Security或自定义的日志拦截器,以增强服务的安全性和监控能力。 6. **RESTful服务**:CXF还支持创建RESTful服务,只需使用`...
6. **测试调用**:最后,你可以通过CXF客户端调用Web服务接口,此时ws-security的设置将会自动应用到请求中,保证了调用的安全性。 在提供的压缩包文件"WsClient"中,可能包含了实现以上步骤的示例代码,例如Java...
在学习CXF Webservice时,你需要理解上述组件的作用,并掌握如何配置和使用CXF来创建服务端点、客户端代理,以及如何进行数据绑定、错误处理和安全性设置。实践项目是加深理解的好方法,可以参考提供的博文链接,...
总的来说,通过Apache CXF和Spring框架,我们可以轻松地构建基于HTTPS的Web服务,确保数据传输的安全性。理解并掌握这种开发方式对于任何涉及Web服务交互的Java开发者都至关重要。同时,对于理解和实施安全通信标准...
- **安全性**:提供SSL/TLS加密、WS-Security等安全特性,保障服务的安全通信。 - **数据绑定**:支持JAXB(Java Architecture for XML Binding)进行对象到XML的自动转换,简化数据交换过程。 对于开发者而言,...