具体看文档,
Apache Cxf 安全认证
1. 方法一:密码验证 实例查看 apacheCxf_密码.zip
client-beans.xml
<jaxws:outInterceptors>
<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="PasswordDigest" /> <entry key="user" value="user_name" />
<entry key="passwordCallbackRef">
<ref bean="clientPasswordCallback" /> </entry>
</map> </constructor-arg>
</bean> </jaxws:outInterceptors>
在客户端发送请求时,使用一个拦截器,通过 ClientPasswordCallback 类加载用 户账号密码。
beans.xml
<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="PasswordDigest" /> <entry key="passwordCallbackRef">
<ref bean="serverPasswordCallback" /> </entry>
</map> </constructor-arg>
</bean> </jaxws:inInterceptors>
在服务端接受请求时,使用一个拦截器,通过 ServerPasswordCallback 得到 用户密码,进行验证。
2. 方法二:CA 证书验证
实例查看 apacheCxf_SSL.zip,或者文档 apache CXF ssl 安全认证教程.pdf
UserServiceFactory
/**
* 取得信任证书管理器
*
* @return
* @throws IOException */
private static TrustManager[] getTrustManagers() throws IOException { try {
String alg = TrustManagerFactory.getDefaultAlgorithm(); TrustManagerFactory factory = TrustManagerFactory.getInstance(alg); InputStream fp = UserServiceFactory.class.getResourceAsStream(trustStore); KeyStore ks = KeyStore.getInstance("JKS");
ks.load(fp, trustStorePass.toCharArray());
fp.close();
factory.init(ks);
TrustManager[] tms = factory.getTrustManagers();
return tms;
} catch (NoSuchAlgorithmException e) { e.printStackTrace();
} catch (KeyStoreException e) { e.printStackTrace();
} catch (CertificateException e) { e.printStackTrace();

}
return null; }
/**
* 取得个人证书管理器 * @return *
* @throws IOException
*/
private static KeyManager[] getKeyManagers() throws IOException { try {
String alg = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory factory = KeyManagerFactory.getInstance(alg); InputStream fp = UserServiceFactory.class.getResourceAsStream(keyStore); KeyStore ks = KeyStore.getInstance("JKS");
ks.load(fp, keyStorePass.toCharArray());
fp.close();
factory.init(ks, keyStorePass.toCharArray());
KeyManager[] keyms = factory.getKeyManagers();
return keyms;
} catch (NoSuchAlgorithmException e) { e.printStackTrace();
} catch (KeyStoreException e) { e.printStackTrace();
} catch (CertificateException e) { e.printStackTrace();
} catch (UnrecoverableKeyException e) { e.printStackTrace();
}
return null; }
static {
// 得到实例
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "Test/client-beans.xml" });
us = (UserService) context.getBean("client");
Client client = ClientProxy.getClient(us);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit(); TLSClientParameters tlsParams = httpConduit.getTlsClientParameters(); if (tlsParams == null)
tlsParams = new TLSClientParameters(); tlsParams.setSecureSocketProtocol("SSL"); tlsParams.setDisableCNCheck(true);

try {
tlsParams.setKeyManagers(getKeyManagers()); tlsParams.setTrustManagers(getTrustManagers());
} catch (IOException e) { e.printStackTrace();
}
httpConduit.setTlsClientParameters(tlsParams); }
public static UserService getInstance() { return us;
}
通过 UserServiceFactory 得到 client 的 key,将 key 传给 server 进行验证。Server 端使用 tomcat 配置 ssl 验证器。增加 tomcat 的 server.xml 中的 connector。 <Connector port="8444" SSLEnabled="true" secure="true" algorithm="SunX509" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" clientAuth="true" sslProtocol="TLS" keystoreFile="/Users/apple/server.store" keystorePass="123456" keystoreType="jks" keyAlias="akey" truststoreFile="/Users/apple/server.store" truststorePass="123456" truststoreType="jks" />
生成证书方式可查看 apache CXF ssl 安全认证教程.pdf

分享到:
相关推荐
标题“apache-cfx”表明我们要讨论的是Apache CXF项目,而描述中提到的“cfx-2.7.3 sourcecode the latest version”则指示我们关注的是Apache CXF的2.7.3版本的源代码。源代码是软件的核心部分,它包含了程序的所有...
Apache CXF的名字来源于两个项目的合并——CX(曾经是XFire的更名)和CXF(CX的后续版本)。这个框架以其易用性、灵活性和高性能而闻名,广泛应用于企业级应用的开发。 在Web服务技术开发中,Apache CXF提供了以下...
此外,它还支持OAuth2和其他认证协议,以适应现代Web应用的安全需求。 **6. 传输协议** Apache CXF支持多种传输协议,包括HTTP、HTTPS、JMS、FTP等,这使得服务可以灵活地部署在不同的网络环境中。同时,CXF还支持...
标签:apache-cfx-jsr181-jaxb-http-example-1.0.0.jar.zip,apache,cfx,jsr181,jaxb,http,example,1.0.0,jar.zip包下载,依赖包
质量平均值是CFX分析中的一种重要统计量,它通常用来描述某一参数(如速度、压力、温度等)在截面上的整体平均状态。在给定的描述中提到,质量流量加权平均值是通过计算每一层网格的质量流量来获得的。这种做法考虑...
CFX是一款强大的计算流体动力学(Computational Fluid Dynamics, CFD)软件,广泛应用于工业领域,如航空航天、汽车工程、机械设计等,用于模拟流体流动、传热和化学反应等问题。本压缩包“cfxexample.rar”提供了一...
CFX帮助文件 希望对大家有帮助 可惜是英文
CFX默认空化模型CEL方法定义的CCL
Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。这个框架提供了丰富的功能,包括SOAP、RESTful、WS-* 协议支持,以及客户端和服务端的实现。理解Apache CXF的文件目录结构以及...
CFX PBS并行机作业提交脚本
4. 安全性:CXF提供了多种安全机制,包括基本认证、 Digest认证、OAuth、SSL/TLS等。它还支持WS-Security(Web Services Security)标准,可以实现消息级别的安全性,如签名、加密和令牌验证。 5. 插件和扩展:CXF...
- **多相流定义**:多相流是指在一个系统中同时存在两种或两种以上不同的流体相,每种流体相都有自己的流场参数(如速度、压力、温度、密度等)。这种流体相之间的差异使得多相流具有复杂的行为特性。 - **“相”的...
- **传热模型**:除了流体流动外,ANSYS CFX 还支持复杂的传热过程模拟,包括自然对流、辐射传热等多种传热方式。 - **化学反应模型**:对于涉及化学反应的过程,ANSYS CFX 提供了丰富的化学反应模型,可以精确模拟...
- **CFD软件简介**: 商用CFD软件通常包含一系列工具和技术,可以帮助用户建立流体流动的数学物理模型,选择合适的数值算法进行求解,并将计算结果以可视化的方式呈现出来。 - **技术路线**: CFD数值模拟的一般流程...
总的来说,Apache CXF提供了一种强大而灵活的方式来创建Web服务接口,支持多种协议和标准,使得跨系统的通信变得更加简单。利用提供的资源,你可以在自己的项目中快速地集成和实现Web服务功能。
CFX Manager 3.0是一款专门用于生物医学研究的软件工具,主要应用于实时定量聚合酶链式反应(Real-Time PCR)的数据分析与管理。在科研领域,尤其是生物医学科学中,这种技术对于基因表达分析、病原体检测、基因突变...
CFX,全称为Computational Fluid Dynamics eXtreme,是一款由ANSYS公司开发的高级流体动力学(CFD)软件。它广泛应用于各种工程领域,如航空航天、汽车工程、机械设计、能源与环境等,用于模拟和分析复杂的流体流动...
CFX支持多种几何描述方式,包括数据文件和三维几何模型。数据文件主要用于描述叶片和流道的几何形状,通过离散点来定义叶片轮廓及流道边界,适用于复杂且不规则的结构。三维几何则利用CAD软件生成的实体模型,便于...
CFX-Solver是一款由ANSYS公司开发的计算流体动力学(CFD)求解器,主要用于模拟流体流动、热传递以及相关的物理现象。它广泛应用于航空航天、汽车工程、机械设计、能源与环境等多个领域。这篇CFX培训PPT是针对初学者...