服务端
1、所需文件
service.jks,放在src下面(与client.jks是一对,具体生成方式可上网查询)
services.xml
<service name="receiveMsgServer">
<description>
server of receiveMessage ------服务描述信息
</description>
<parameter name="ServiceClass">
com.test.ReceiveMessageServer -------服务类,连带包结构
</parameter>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier
</parameter>
-------这是axis2与spring的集成,所以将服务类配成了spring bean,这里直接引用spring bean 的名称
<parameter name="SpringBeanName" >ReceiveMsgBean</parameter>
<messageReceivers> ----定义服务所需的输入输出参数
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
-------安全策略的配置
<module ref="rampart" />
<wsp:Policy wsu:Id="SigOnly"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:TripleDesRsa15 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<sp:OnlySignEntireHeadersAndBody />
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body />
</sp:SignedParts>
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:user>service</ramp:user>
-------判断密码的回调方法的路径,后面有具体代码
<ramp:passwordCallbackClass>com.test.MsgCallbackHandler</ramp:passwordCallbackClass>
<ramp:signatureCrypto>
<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
<ramp:property
name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>
<ramp:property
name="org.apache.ws.security.crypto.merlin.keystore.password">servicePW</ramp:property>
</ramp:crypto>
</ramp:signatureCrypto>
</ramp:RampartConfig>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
</service>
3、代码
判断密码的回调方法的具体代码:
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 MsgCallbackHandler implements CallbackHandler {
private final static String SERVER_ALIAS = "service";
private final static String SERVER_ALIAS_PASSWORD = "servicePW";
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
// To use the private key to sign messages, we need to provide the private key password
WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];
if (pwcb.getIdentifier().equals(SERVER_ALIAS)) {
pwcb.setPassword(SERVER_ALIAS_PASSWORD);
return;
}
}
}
}
服务方法的具体代码:
public class ReceiveMessageServer {
public String receiveMessage(Message message) {
if (message !=null && StringUtils.isEmpty(message.getMsgId())) {
System.out.println("成功接收信息!");
return "0";
}else{
System.out.println("接收信息失败!");
return "1";
}
}
分享到:
相关推荐
Axis2提供了一种高效、灵活且可扩展的方式来实现服务端和客户端的服务调用。当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户...
标题中的“axis2学习——开发自定义的axis2服务”表明了本文主要涉及Apache Axis2框架,这是一个用于构建Web服务和SOA(Service-Oriented Architecture)应用的开放源码平台。Axis2允许开发者创建、部署和管理服务,...
在“axis2服务端源码,带用户身份认证”这个项目中,我们关注的是如何在Axis2服务端实现安全的身份验证机制,确保只有经过授权的用户能够访问服务。 1. **Axis2框架**: Axis2是Java Web服务的核心引擎,它提供了...
这可以通过编写一个Java类并使用Axis2的注解来实现,例如`@WebService`。这个类将作为服务端点,对外提供服务。同时,你需要定义服务接口,这将定义客户端调用的API。 部署服务到Axis2服务器是集成的关键步骤。你...
- **代码第一**:也可以先编写Java服务接口和实现,然后使用Axis2工具生成WSDL。 4. **部署Web服务** - **服务 Archive (SAR)**:Axis2使用SAR格式打包服务,类似于WAR文件。将服务类和相关依赖放入SAR文件,然后...
在实际项目中,还需要注意配置文件(如axis-server.xml和axis-client.xml)的设置,以及可能的SOAP消息头和安全策略。对于复杂的Web服务,可能还需要处理事务、异常处理和性能优化等问题。 总之,Axis为开发者提供...
5. **扩展和插件**:轴允许通过模块和策略进行扩展,可以添加新的协议、数据格式或安全特性。 压缩文件"axis.zip"内的子文件可能是以下一些关键的Axis库文件: - `axis.jar`:这是核心库,包含用于处理Web服务请求...
Axis提供了一系列命令行工具,如`wsdl2java`用于从WSDL文件生成Java代码,`java2wsdl`则相反,可以从Java类生成WSDL文件。此外,` AXIS Ant任务`也可以集成到构建流程中,方便Web服务的自动化构建和部署。 **九、...
- AXIS是Apache软件基金会下的一个项目,主要用于实现SOAP通信,提供了一个强大的工具集来处理Web服务,包括客户端和服务器端的实现。 - 它支持WSDL(Web服务描述语言),使得服务能够被自动发现和绑定,极大地...
本书探讨了如何通过一系列技术和策略来提高Apache Axis安装的安全性,例如使用HTTPS协议、限制访问权限等措施。 #### 目标读者与先决条件 本书适合那些希望学习如何使用Java开发Web服务的人员。为了能够充分理解书...
3. **添加拦截器**:将创建的安全上下文拦截器添加到CXF客户端中,以便在发送请求时执行安全策略。通常,你会在客户端调用服务前添加`WSS4JOutInterceptor`。 4. **处理响应**:在接收服务响应时,可能需要检查消息...
3. ** Axis2**: Axis2是Apache软件基金会开发的一个Web服务引擎,它是JAX-WS规范的实现。在Java中调用.NET Web服务时,Axis2提供了一套工具和库,使得开发者能够轻松地生成客户端代码来访问Web服务。 4. **wsimport...
2. **识别三菱与发那科攻丝指令的区别**:不同的数控系统有自己的指令集,例如,三菱可能使用G81-G89来表示不同的攻丝循环,而发那科可能使用M60-M69。理解这些指令的差异对于编写兼容两者系统的后处理器至关重要,...
这个库可能还包括了处理WS-Security头信息的解析和验证,以及生成带有安全信息的SOAP消息的功能。 总的来说,"ws-security jar" 是一个重要的工具,对于那些希望在Java环境中构建安全的Web服务应用程序的开发者来说...
在实际开发中,WS-Security的实现通常依赖于库,如Apache CXF、Axis2或Spring-WS,它们提供了API来简化WS-Security的集成。开发者可以通过这些库轻松地在SOAP消息中添加和验证安全元素。 为了实现WS-Security,...
尤其在Windows 7操作系统中,远程终端服务(Remote Desktop Services,RDS)为用户提供了便捷的方式,使得用户可以在一台计算机上操控另一台计算机,实现了跨越地理位置的远程协作和工作。本文将深入探讨Win7操作...
这可能涉及到数据分页、缓存策略以及合理选择图表类型和渲染方式。同时,实时更新图表时,应考虑异步加载和更新,以避免阻塞用户界面。 9. **扩展功能** 除了基础的统计图,TDBChart还支持交互式特性,如鼠标悬停...
在风能利用领域,垂直轴风力发电机(Vertical Axis Wind Turbine, VAWT)是一种与传统的水平轴风力发电机(Horizontal Axis Wind Turbine, HAWT)相对的设计方案。本文档聚焦于一种创新设计——“带测风仪的垂直式...
它们的新的项目分别是ApacheCXF和Axis2.Java语言也制定关于REST网络服务规范:JAX-RS:JavaAPIforRESTfulWebServices(JSR311)。相信还会出现更多与REST相关的激动人心的信息。 REST与AJAX技术 尽管AJAX技术的...
ONVIF (Open Network Video Interface Forum) 是一个旨在推动网络视频产品标准化的全球性论坛,以便不同制造商的产品之间能够实现互操作性。Profile Q是ONVIF定义的一种配置文件,它主要关注于设备管理和控制功能,...