`

带有安全策略的axis2实现方式(一)

阅读更多
服务端

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";
    }

}





0
2
分享到:
评论

相关推荐

    axis2客户端调用服务端,带用户身份认证

    Axis2提供了一种高效、灵活且可扩展的方式来实现服务端和客户端的服务调用。当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户...

    axis2学习——开发自定义的axis2服务

    标题中的“axis2学习——开发自定义的axis2服务”表明了本文主要涉及Apache Axis2框架,这是一个用于构建Web服务和SOA(Service-Oriented Architecture)应用的开放源码平台。Axis2允许开发者创建、部署和管理服务,...

    axis2服务端源码,带用户身份认证

    在“axis2服务端源码,带用户身份认证”这个项目中,我们关注的是如何在Axis2服务端实现安全的身份验证机制,确保只有经过授权的用户能够访问服务。 1. **Axis2框架**: Axis2是Java Web服务的核心引擎,它提供了...

    axis2集成到已有项目操作实例(含源代码)

    这可以通过编写一个Java类并使用Axis2的注解来实现,例如`@WebService`。这个类将作为服务端点,对外提供服务。同时,你需要定义服务接口,这将定义客户端调用的API。 部署服务到Axis2服务器是集成的关键步骤。你...

    Axis2 1.6.2 实践示例

    - **代码第一**:也可以先编写Java服务接口和实现,然后使用Axis2工具生成WSDL。 4. **部署Web服务** - **服务 Archive (SAR)**:Axis2使用SAR格式打包服务,类似于WAR文件。将服务类和相关依赖放入SAR文件,然后...

    实现WebService 的 Axis jar包

    在实际项目中,还需要注意配置文件(如axis-server.xml和axis-client.xml)的设置,以及可能的SOAP消息头和安全策略。对于复杂的Web服务,可能还需要处理事务、异常处理和性能优化等问题。 总之,Axis为开发者提供...

    axisjar包压缩axis.zip

    5. **扩展和插件**:轴允许通过模块和策略进行扩展,可以添加新的协议、数据格式或安全特性。 压缩文件"axis.zip"内的子文件可能是以下一些关键的Axis库文件: - `axis.jar`:这是核心库,包含用于处理Web服务请求...

    AXIS配置文档例子

    - AXIS是Apache软件基金会下的一个项目,主要用于实现SOAP通信,提供了一个强大的工具集来处理Web服务,包括客户端和服务器端的实现。 - 它支持WSDL(Web服务描述语言),使得服务能够被自动发现和绑定,极大地...

    Develop Web Services With Apache Axis

    本书探讨了如何通过一系列技术和策略来提高Apache Axis安装的安全性,例如使用HTTPS协议、限制访问权限等措施。 #### 目标读者与先决条件 本书适合那些希望学习如何使用Java开发Web服务的人员。为了能够充分理解书...

    纯java调用ws-security+CXF实现的webservice安全接口

    3. **添加拦截器**:将创建的安全上下文拦截器添加到CXF客户端中,以便在发送请求时执行安全策略。通常,你会在客户端调用服务前添加`WSS4JOutInterceptor`。 4. **处理响应**:在接收服务响应时,可能需要检查消息...

    java调用.net webservice时所需的jar包

    3. ** Axis2**: Axis2是Apache软件基金会开发的一个Web服务引擎,它是JAX-WS规范的实现。在Java中调用.NET Web服务时,Axis2提供了一套工具和库,使得开发者能够轻松地生成客户端代码来访问Web服务。 4. **wsimport...

    三菱&发那科三轴UG后处理

    2. **识别三菱与发那科攻丝指令的区别**:不同的数控系统有自己的指令集,例如,三菱可能使用G81-G89来表示不同的攻丝循环,而发那科可能使用M60-M69。理解这些指令的差异对于编写兼容两者系统的后处理器至关重要,...

    ws-security jar

    这个库可能还包括了处理WS-Security头信息的解析和验证,以及生成带有安全信息的SOAP消息的功能。 总的来说,"ws-security jar" 是一个重要的工具,对于那些希望在Java环境中构建安全的Web服务应用程序的开发者来说...

    Web 服务规范_第 4 部分:WS-Security源码

    在实际开发中,WS-Security的实现通常依赖于库,如Apache CXF、Axis2或Spring-WS,它们提供了API来简化WS-Security的集成。开发者可以通过这些库轻松地在SOAP消息中添加和验证安全元素。 为了实现WS-Security,...

    win7操作系统 远程终端

    尤其在Windows 7操作系统中,远程终端服务(Remote Desktop Services,RDS)为用户提供了便捷的方式,使得用户可以在一台计算机上操控另一台计算机,实现了跨越地理位置的远程协作和工作。本文将深入探讨Win7操作...

    Delphi TDBChart实现统计

    这可能涉及到数据分页、缓存策略以及合理选择图表类型和渲染方式。同时,实时更新图表时,应考虑异步加载和更新,以避免阻塞用户界面。 9. **扩展功能** 除了基础的统计图,TDBChart还支持交互式特性,如鼠标悬停...

    行业文档-设计装置-一种带测风仪的垂直式风力发电机.zip

    在风能利用领域,垂直轴风力发电机(Vertical Axis Wind Turbine, VAWT)是一种与传统的水平轴风力发电机(Horizontal Axis Wind Turbine, HAWT)相对的设计方案。本文档聚焦于一种创新设计——“带测风仪的垂直式...

    ASP EXCEL导入SQL

    它们的新的项目分别是ApacheCXF和Axis2.Java语言也制定关于REST网络服务规范:JAX-RS:JavaAPIforRESTfulWebServices(JSR311)。相信还会出现更多与REST相关的激动人心的信息。  REST与AJAX技术  尽管AJAX技术的...

    onvif最新官方文档

    ONVIF (Open Network Video Interface Forum) 是一个旨在推动网络视频产品标准化的全球性论坛,以便不同制造商的产品之间能够实现互操作性。Profile Q是ONVIF定义的一种配置文件,它主要关注于设备管理和控制功能,...

Global site tag (gtag.js) - Google Analytics