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
分享到:
相关推荐
3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息,实现两个系统间消息的...
cxf客户端调用axis服务端流程
CXF建立webservice服务端和客户端,发送格式为XML,服务端进行XML解析,并将收到请求报文解析入库,数据库为mysql。
cxf开发webservice简单实例:包括服务端与客户端并所有需要的jar,不要分啦。
Springboot整合CXF发布Web service和客户端调用(用户和密码验证)打开及用
cXF实现webservice 服务端和客户端
cxf_axis_xfire客户端调用的几种方法[收集].pdf
cxf_axis_xfire客户端调用的几种方法.docx
NULL 博文链接:https://huangjiateng.iteye.com/blog/2195585
整理了一上午,测试通过,cxf服务端和客户端所需jar包
cxf生成客户端 服务端代码
cxf webservice 简单例子 服务端 客户端 com.test.ClientTest 进行测试,导入myeclipse可以直接运行
NULL 博文链接:https://javastudyeye.iteye.com/blog/1297557
cxf 与 Spring 结合,此例子中包含服务端和客户端, 2个工程都是与SSH 结合使用。相信对刚接触的朋友有用!
使用CXF返回不同的数据类型,demo包含服务端和客户端,并且和spring整合
源码里面包含了了一个简单的插入功能,主要是为了测试mybatis是否连接上数据库的时候写的测试类,作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周...如题,基于maven项目的ssm框架和cxf框架的整合。
cxf客户端调用axis服务端流程.docxcxf客户端调用axis服务端流程.docx
教你一步一步从服务端到客户端利用cxf开发接口,简单明了
cxf 完整的服务端客户端
使用cxf和spring开发基于https的webservice服务端以及客户端样例