【问题标题】:Consume SOAP API from WSO2 ECLIPSE Developer Studio从 WSO2 ECLIPSE Developer Studio 使用 SOAP API
【发布时间】:2019-05-06 17:57:11
【问题描述】:

我需要使用两个 SOAP API 的解决方案。

首先我有一个 wsdl url,一旦在机器上安装了证书,它就可以工作我只是想问一下在创建流程时是否需要在开发人员工作室上进行任何类型的配置。

其次,我需要在 wso2 开发人员工作室中创建一个流程,该流程将调用 SOAP WSDL URL 并给出响应,但问题是 wsdl 包含安全策略用户名-令牌 ws-security 配置,任何专家都告诉我流程。

这两种情况都适用于 SOAP UI 工具。我是 wso2 的新手,任何人都可以帮助我吗??

提前致谢!

【问题讨论】:

    标签: wso2 wso2esb wso2carbon wso2developerstudio


    【解决方案1】:

    对于第一个问题,答案是否定的。服务器的证书应该只存储在客户端。当调用启用 TLS/SSL 的 URL 时,服务器的证书应存储在客户端的信任库中。如果您的客户端是 WSO2 服务器,则应将该证书导入 WSO2 服务器的 client-truststore.jks。那是特定于部署的。在 Developer Studio 中开发工件期间无需执行任何操作。

    【讨论】:

      【解决方案2】:

      (1) 开发工作室没有什么可做的。您需要将后端的证书导入到 WSO2 服务器的信任库中。

      (2) 您可以创建代理服务并调用安全后端。由于您的后端受 UT 策略保护,因此您必须在调用它时构造一个用户名令牌。我们可以使用类中介来构造和设置用户名令牌。

      更多详情请见:http://xacmlinfo.org/2014/03/25/how-to-esb-invoking-username-token-secured-backend-service/

      以下是类中介的简化版本。

      public class UTTokenBuilder extends AbstractMediator{
          @Override
          public boolean mediate(MessageContext messageContext) {
              try {
                  org.apache.axis2.context.MessageContext context = ((Axis2MessageContext) messageContext)
                          .getAxis2MessageContext();
                  context.getOptions().setUserName("admin");
                  context.getOptions().setPassword("admin");
                  return true;
              } catch (SynapseException e) {
                  throw e;
              } catch (Exception e) {
                  throw new SynapseException("Error while building UT Token");
              }
          }
      }
      

      以下是调用安全后端的示例代理。

      <proxy xmlns="http://ws.apache.org/ns/synapse"
             name="sec2"
             startOnLoad="true"
             statistics="disable"
             trace="disable"
             transports="http,https">
         <target>
            <inSequence>
               <class name="org.soasecurity.wssecurity.ut.mediator.UTTokenBuilder"/>
               <call>
                  <endpoint>
                     <address uri="https://localhost:8243/services/secTestProxy">
                        <enableSec policy="conf:/UTPolicy.xml"/>
                     </address>
                  </endpoint>
               </call>
               <respond/>
            </inSequence>
         </target>
         <description/>
      </proxy>
      

      请注意,为简单起见,我使用了地址端点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        相关资源
        最近更新 更多