`

CXF密码验证_服务端和客户端配置

阅读更多

 

1:服务端spring里的配置:

 

Java代码  收藏代码
  1. <bean id="Customer" class="org.web.HelloServiceImpl"></bean>  
  2. lt;jaxws:endpoint  id="custom"  implementor="#Customer"   address="/web" >  
  3.      <jaxws:inInterceptors>    
  4.           <bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />    
  5.           <!--<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />    
  6.           -->  
  7.           <bean class="org.web.soapHeader.ReadSoapHeader"></bean>  
  8.           <!--<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">    
  9.               <constructor-arg>    
  10.                   <map>    
  11.                       <entry key="action" value="UsernameToken" />    
  12.                       <entry key="passwordType"    
  13.                           value="PasswordText" />    
  14.                       <entry key="user" value="cxfServer" />    
  15.                       <entry key="passwordCallbackRef">    
  16.                           <ref bean="serverPasswordCallback" />    
  17.                       </entry>    
  18.                   </map>    
  19.               </constructor-arg>    
  20.           </bean> -->  
  21.           </jaxws:inInterceptors>    
  22. </jaxws:endpoint>  

这个里面是有注释的..区别上一个密码验证的示例!

关键代码就有一句: <bean class="org.web.soapHeader.ReadSoapHeader"></bean>

  这个是自己写的读取soap信息.查看密码是否正确!

2:soap读入信息的验证:ReadSoapHeader代码:

 

Java代码  收藏代码
  1. public class ReadSoapHeader extends AbstractPhaseInterceptor<SoapMessage> {  
  2.     private SAAJInInterceptor saa=new SAAJInInterceptor();  
  3.     public ReadSoapHeader(){  
  4.         super(Phase.PRE_PROTOCOL);  
  5.         getAfter().add(SAAJInInterceptor.class.getName());  
  6.     }  
  7.     public void handleMessage(SoapMessage message) throws Fault {  
  8.         SOAPMessage mess=message.getContent(SOAPMessage.class);  
  9.         if(mess==null){  
  10.             saa.handleMessage(message);  
  11.             mess=message.getContent(SOAPMessage.class);  
  12.         }  
  13.         SOAPHeader head=null;  
  14.         try {  
  15.             head = mess.getSOAPHeader();  
  16.         } catch (SOAPException e) {  
  17.             e.printStackTrace();  
  18.         }  
  19.         if(head==null){  
  20.             return;  
  21.         }  
  22.         NodeList nodes=head.getElementsByTagName("tns:spId");  
  23.         NodeList nodepass=head.getElementsByTagName("tns:spPassword");  
  24.         if(nodes.item(0).getTextContent().indexOf("wdw")!=-1){  
  25.             if(nodepass.item(0).getTextContent().equals("wdwsb")){  
  26.                 System.out.println("认证成功");  
  27.             }  
  28.         }  
  29.         else{  
  30.             SOAPException soapExc=new SOAPException("认证错误");  
  31.             throw new Fault(soapExc);  
  32.         }  
  33.     }  
  34. }  

  功能:判断客户端传来的soap信息头是否有密码..有的话判断是否正确!

 

3:客户端spring的配置:

 

Java代码  收藏代码
  1. <bean id="webTest" class="org.web.HelloService" factory-bean="client" factory-method="create"/>  
  2.  <bean id="client" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean" >  
  3.         <property name="address" value="http://127.0.0.1:88/Hello/web/web"></property>  
  4.         <property name="serviceClass" value="org.web.HelloService"></property>  
  5.         <property name="outInterceptors">  
  6.             <list>  
  7.                 <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />    
  8.                 <!--<bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" />  -->  
  9.                 <bean class="org.web.soapHeader.AddSoapHeader"></bean>  
  10.                 <!--<bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">    
  11.                     <constructor-arg>    
  12.                         <map>    
  13.                             <entry key="action" value="UsernameToken" />    
  14.                             <entry key="passwordType"  value="PasswordText" />    
  15.                             <entry key="user" value="cxfClient" />    
  16.                             <entry key="passwordCallbackRef">    
  17.                                 <ref bean="clientPasswordCallback" />    
  18.                             </entry>    
  19.                         </map>    
  20.                     </constructor-arg>    
  21.                 </bean>    
  22.             -->  
  23.             </list>  
  24.     </property>  
  25.  </bean>  

  PS:注意注释>...重点是:

Java代码  收藏代码
  1. <bean class="org.web.soapHeader.AddSoapHeader"></bean>  

 4:对soap进行如入头信息.把密码加进去:AddSoapHeader代码:

 

Java代码  收藏代码
  1. public class AddSoapHeader extends AbstractSoapInterceptor {  
  2.     private static String nameURI="http://127.0.0.1/Hello/web";  
  3.       
  4.     public AddSoapHeader(){  
  5.         super(Phase.WRITE);  
  6.     }  
  7.     public void handleMessage(SoapMessage message) throws Fault {  
  8.         SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  9.         Date date=new Date();  
  10.         String time =sd.format(date);  
  11.         String spPassword="wdwsb";  
  12.         String spName="wdw";  
  13.           
  14.         QName qname=new QName("RequestSOAPHeader");  
  15.         Document doc=DOMUtils.createDocument();  
  16.           
  17.         Element spId=doc.createElement("tns:spId");  
  18.         spId.setTextContent(spName);  
  19.           
  20.         Element spPass=doc.createElement("tns:spPassword");  
  21.         spPass.setTextContent(spPassword);  
  22.           
  23.         Element root=doc.createElementNS(nameURI, "tns:RequestSOAPHeader");  
  24.         root.appendChild(spId);  
  25.         root.appendChild(spPass);  
  26.           
  27.         SoapHeader head=new SoapHeader(qname,root);  
  28.         List<Header> headers=message.getHeaders();  
  29.         headers.add(head);  
  30.     }  
  31. }  

  很简单的东西...现在密码已经加进去了...spring里也已经配置好了..

客户端就可以正常的请求了..对请求的内容会进行soap头处理.把密码加进去....

服务端通过了客户端的权限密码请求就可以了.

转自:http://blog.csdn.net/keeyce/article/details/7090753

 

分享到:
评论

相关推荐

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入CXF的依赖。这通常通过在`pom.xml`文件中添加对应的Maven依赖来完成...

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

    同时,配置HTTPS需要在CXF的Servlet配置中启用SSL,指定密钥库路径和密码。 客户端开发相对简单,它通过CXF的WSClientAPI动态生成代理对象,调用远程服务。首先,我们需要设置HTTPS的信任管理器,信任服务端的证书...

    cxf webservice简单例子 服务端 客户端

    本教程将基于CXF构建一个简单的Web服务,包括服务端和客户端的实现。我们将使用CXF提供的工具和服务接口来创建服务,然后通过客户端调用来验证服务的正确性。 ### 1. CXF简介 CXF是Apache软件基金会的一个项目,它...

    CXF 通过用户名和密码进行验证

    总结,"CXF 通过用户名和密码进行验证"涉及到了Web服务安全的基本概念,包括WS-Security标准、CXF的安全配置以及最佳实践。理解并正确应用这些知识对于开发安全的Web服务至关重要。提供的压缩包文件"cxftestClient...

    CXF服务端和客户端 应用开发指南

    ### CXF服务端和客户端应用开发指南:详细解析与实践 #### 一、CXF概述与应用场景 CXF(Camel XFire Framework)是Apache软件基金会的一个开源项目,旨在简化Web Services的开发过程,提供了一个强大的框架来创建...

    CXF和Spring整合开发的服务端及客户端

    **标题解析:** "CXF和Spring整合开发的服务端及客户端" 指的是使用Apache CXF框架与Spring框架相结合,构建服务端(服务提供者)和服务端客户端(服务消费者)。CXF是一个开源的Web服务框架,它允许开发者创建和...

    CXF(WS_Security)证书加密

    5. **客户端配置**:同样,客户端也需要配置其证书,并设置如何验证服务端的证书。CXF客户端API允许我们设置这些属性。 6. **测试通信**:最后,通过发起一个带有WS-Security头的SOAP请求,测试加密和认证是否成功...

    Cxf客户端及服务器端,实现客户端和服务器端的权限验证

    2. **客户端配置**: - 配置CXF客户端,添加安全拦截器,如WSS4JOutInterceptor,以添加必要的安全头部。 - 客户端需要提供认证信息,对于基本认证,这可以通过设置HTTP请求头完成;对于WS-Security,可能需要创建...

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    springboot整合CXF发布webservice和客户端调用

    它允许开发者以Java注解或XML方式定义服务接口,并提供了丰富的客户端和服务端工具。 3. **整合过程** - 首先,我们需要在`pom.xml`中添加CXF和SpringBoot的相关依赖。 - 创建一个服务接口,使用JAX-WS注解如`@...

    cxf+spring开发webservice客户端与服务端实例

    4. 测试:编写测试用例,验证服务端和客户端的正常交互。 六、注意事项 1. 异常处理:在服务端和客户端都要进行适当的异常处理,确保服务的健壮性。 2. 安全性:考虑服务的安全性,如使用HTTPS,认证和授权等。 3. ...

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

    9. **源码分析**:提供的源码示例应该包含了服务端和客户端的完整实现,包括Spring配置文件、服务接口和实现类、以及测试代码。通过研究这些代码,可以更深入地理解如何结合CXF和Spring来创建和消费基于HTTPS的Web...

    CXF 添加soap 头部信息.zip_CXF增加soap头验证_bluex8z_cxf_meltedkw7_soap信息头

    将自定义的Interceptor添加到CXF服务端或客户端的配置中。如果是Spring配置,可以在`cxf.xml`文件中添加以下代码: ```xml &lt;cxf:bus&gt; &lt;cxf:outInterceptors&gt; &lt;/cxf:outInterceptors&gt; &lt;/cxf:bus&gt; ``` 4. *...

    CXF开发webservice服务端

    ### CXF 开发 WebService 服务端详解 #### 一、引言 随着企业级应用对服务化的不断追求,Web Service 成为了实现不同系统间通信的重要手段之一。Apache CXF 是一个高性能、易于使用的框架,它支持多种协议,如SOAP...

    spring2.5+xfire1.2.6 客户端和服务端的配置

    `WSSpring`可能包含了Spring配置文件以及与服务相关的类,而`WSTest`可能包含测试用例,用于验证服务端和客户端的正确配置和功能。 总结来说,"spring2.5+xfire1.2.6 客户端和服务端的配置"涉及到的是一项历史性的...

    CXF协议WebService+Spring客户端和服务端程序,实现了多数据源动态切换

    测试部分可能包含了一些单元测试或者集成测试,通过运行这些测试可以验证客户端和服务端的交互是否正常。 为了实现多数据源动态切换,项目可能使用了Spring的`AbstractRoutingDataSource`类。这是一个抽象数据源,...

    cxf生成onvif客户端

    5. **处理异常和认证**:ONVIF服务可能需要身份验证,如用户名和密码。你需要在创建服务代理时提供这些凭证。同时,处理可能的SOAP或网络异常也很重要。 6. **测试和调试**:编译并运行你的客户端应用,测试与ONVIF...

    WebService_CXF_x509

    2. **CXF配置**:在服务端,你需要将生成的证书和私钥添加到服务器的Keystore中,并在CXF的服务器配置中指定Keystore路径和密码。在客户端,需要将信任的证书添加到Truststore,并配置Truststore信息。 3. **安全...

    使用cxf的webservice安全验证

    1. **基本认证**:这是最简单的身份验证方式,涉及到用户名和密码的传递。在CXF中,可以通过在Spring配置文件中添加`&lt;security:basic-authentication&gt;`元素来启用此功能。 2. **Digest认证**:相比基本认证,Digest...

    CXF客户端启动过程

    - 如果服务配置了安全机制(如SSL/TLS、WS-Security),CXF会在客户端启动时进行相应的安全设置,如证书验证、用户名/密码认证等。 通过以上步骤,CXF客户端完成了启动和准备过程,能够向服务端发起请求并处理响应...

Global site tag (gtag.js) - Google Analytics