CXF密码认证是在我前面的一篇文章WebService CXF+struts+spring 示例 的基础上写的.如果你感觉看不懂这篇.那就先看看前面的那篇文章吧!
1:spring服务端的配置
<bean id="Customer" class="org.web.HelloServiceImpl"></bean>
<jaxws:endpoint id="custom" implementor="#Customer" address="/web" >
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
<bean 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="cxfServer" />
<entry key="passwordCallbackRef">
<ref bean="serverPasswordCallback" />
</entry>
</map>
</constructor-arg>
</bean>
</jaxws:inInterceptors>
</jaxws:endpoint>
<bean id="serverPasswordCallback" class="org.web.ServerPasswordCallback" />
action:UsernameToken 是使用用户令牌
passwordType:PasswordText 是指密码加密策略.这里是直接密码文本.
user:cxfServer 是指别名
passwordCallbackRef:serverPasswordCallback 是这密码验证..类..就是下面配置的..
2: 类:serverPasswordCallback
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 {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
WSPasswordCallback pc=(WSPasswordCallback) callbacks[0];
String pw=pc.getPassword();
String idf=pc.getIdentifier();
System.out.println("密码是:"+pw);
System.out.println("类型是:"+idf);
if(pw.equals("wdwsb")&&idf.equals("admin")){
System.out.println("成功");
}
else{
throw new SecurityException("验证失败");
}
}
这个不用多说..就是密码验证..很简单!!
3:spring客户端的配置:
<bean id="webTest" class="org.web.HelloService" factory-bean="client" factory-method="create"/>
<bean id="client" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean" >
<property name="address" value="http://127.0.0.1:88/Hello/web/web"></property>
<property name="serviceClass" value="org.web.HelloService"></property>
<property name="outInterceptors">
<list>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
<bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" />
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType"
value="PasswordText" />
<entry key="user" value="cxfClient" />
<entry key="passwordCallbackRef">
<ref bean="clientPasswordCallback" />
</entry>
</map>
</constructor-arg>
</bean>
</list>
</property>
</bean>
<bean id="clientPasswordCallback" class="org.web.clientPasswordCallback"></bean>
跟server的配置差不多..没多少要讲的.呵呵...
4: 类clientPasswordCallback的配置
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 clientPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for(int i=0;i<callbacks.length;i++){
WSPasswordCallback ps=(WSPasswordCallback) callbacks[i];
ps.setPassword("wdwsb");
ps.setIdentifier("admin");
}
}
到此为止..密码认证用户令牌就完成了...
测试!
通过!
当然我前面写的一篇文章是最基本的.缺少了一些jar包.会报错的.
所以要加上以下jar包..
- 大小: 8.4 KB
分享到:
相关推荐
本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入CXF的依赖。这通常通过在`pom.xml`文件中添加对应的Maven依赖来完成...
同时,配置HTTPS需要在CXF的Servlet配置中启用SSL,指定密钥库路径和密码。 客户端开发相对简单,它通过CXF的WSClientAPI动态生成代理对象,调用远程服务。首先,我们需要设置HTTPS的信任管理器,信任服务端的证书...
本教程将基于CXF构建一个简单的Web服务,包括服务端和客户端的实现。我们将使用CXF提供的工具和服务接口来创建服务,然后通过客户端调用来验证服务的正确性。 ### 1. CXF简介 CXF是Apache软件基金会的一个项目,它...
总结,"CXF 通过用户名和密码进行验证"涉及到了Web服务安全的基本概念,包括WS-Security标准、CXF的安全配置以及最佳实践。理解并正确应用这些知识对于开发安全的Web服务至关重要。提供的压缩包文件"cxftestClient...
### CXF服务端和客户端应用开发指南:详细解析与实践 #### 一、CXF概述与应用场景 CXF(Camel XFire Framework)是Apache软件基金会的一个开源项目,旨在简化Web Services的开发过程,提供了一个强大的框架来创建...
**标题解析:** "CXF和Spring整合开发的服务端及客户端" 指的是使用Apache CXF框架与Spring框架相结合,构建服务端(服务提供者)和服务端客户端(服务消费者)。CXF是一个开源的Web服务框架,它允许开发者创建和...
5. **客户端配置**:同样,客户端也需要配置其证书,并设置如何验证服务端的证书。CXF客户端API允许我们设置这些属性。 6. **测试通信**:最后,通过发起一个带有WS-Security头的SOAP请求,测试加密和认证是否成功...
2. **客户端配置**: - 配置CXF客户端,添加安全拦截器,如WSS4JOutInterceptor,以添加必要的安全头部。 - 客户端需要提供认证信息,对于基本认证,这可以通过设置HTTP请求头完成;对于WS-Security,可能需要创建...
Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...
它允许开发者以Java注解或XML方式定义服务接口,并提供了丰富的客户端和服务端工具。 3. **整合过程** - 首先,我们需要在`pom.xml`中添加CXF和SpringBoot的相关依赖。 - 创建一个服务接口,使用JAX-WS注解如`@...
4. 测试:编写测试用例,验证服务端和客户端的正常交互。 六、注意事项 1. 异常处理:在服务端和客户端都要进行适当的异常处理,确保服务的健壮性。 2. 安全性:考虑服务的安全性,如使用HTTPS,认证和授权等。 3. ...
9. **源码分析**:提供的源码示例应该包含了服务端和客户端的完整实现,包括Spring配置文件、服务接口和实现类、以及测试代码。通过研究这些代码,可以更深入地理解如何结合CXF和Spring来创建和消费基于HTTPS的Web...
将自定义的Interceptor添加到CXF服务端或客户端的配置中。如果是Spring配置,可以在`cxf.xml`文件中添加以下代码: ```xml <cxf:bus> <cxf:outInterceptors> </cxf:outInterceptors> </cxf:bus> ``` 4. *...
### CXF 开发 WebService 服务端详解 #### 一、引言 随着企业级应用对服务化的不断追求,Web Service 成为了实现不同系统间通信的重要手段之一。Apache CXF 是一个高性能、易于使用的框架,它支持多种协议,如SOAP...
`WSSpring`可能包含了Spring配置文件以及与服务相关的类,而`WSTest`可能包含测试用例,用于验证服务端和客户端的正确配置和功能。 总结来说,"spring2.5+xfire1.2.6 客户端和服务端的配置"涉及到的是一项历史性的...
5. **处理异常和认证**:ONVIF服务可能需要身份验证,如用户名和密码。你需要在创建服务代理时提供这些凭证。同时,处理可能的SOAP或网络异常也很重要。 6. **测试和调试**:编译并运行你的客户端应用,测试与ONVIF...
测试部分可能包含了一些单元测试或者集成测试,通过运行这些测试可以验证客户端和服务端的交互是否正常。 为了实现多数据源动态切换,项目可能使用了Spring的`AbstractRoutingDataSource`类。这是一个抽象数据源,...
2. **CXF配置**:在服务端,你需要将生成的证书和私钥添加到服务器的Keystore中,并在CXF的服务器配置中指定Keystore路径和密码。在客户端,需要将信任的证书添加到Truststore,并配置Truststore信息。 3. **安全...
1. **基本认证**:这是最简单的身份验证方式,涉及到用户名和密码的传递。在CXF中,可以通过在Spring配置文件中添加`<security:basic-authentication>`元素来启用此功能。 2. **Digest认证**:相比基本认证,Digest...
- 如果服务配置了安全机制(如SSL/TLS、WS-Security),CXF会在客户端启动时进行相应的安全设置,如证书验证、用户名/密码认证等。 通过以上步骤,CXF客户端完成了启动和准备过程,能够向服务端发起请求并处理响应...