2016-04-28 1 views
1

wsセキュリティを使用して外部サービスを呼び出す必要があるプロキシサービスがあります。私は にサービスを呼び出し、応答に基づいて、私はいくつかの情報を抽出する必要があります し、データベースを更新するデータサービスを呼び出します。応答を取得し、 ペイロードを作成してデータサービスを呼び出すと、例外として終わるwsセキュリティヘッダーもあります。WSO2 ESBはDSSコールの前に応答内のws-securityヘッダーを削除できません

私は、データサービスを作成し、呼び出し中

<header action="remove" name="wsse:Security" scope="default" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />

を使用したが運で終わるています。

以下は私のプロキシサービスです。

<?xml version="1.0" encoding="UTF-8"?> 
<proxy name="EDI_Test_Proxy_2" startOnLoad="true" trace="disable" 
    transports="http https" xmlns="http://ws.apache.org/ns/synapse"> 
    <target> 
     <inSequence> 
      <header name="Action" scope="default" value="get_mcash_data" /> 
      <property name="Content-Type" scope="transport" type="STRING" 
       value="application/soap+xml; charset=UTF-8; action=get_mcash_data" /> 
      <call> 
       <endpoint> 
        <address trace="disable" 
         uri="http://localhost:9770/services/my_fetch_data_service" /> 
       </endpoint> 
      </call> 
      <property expression="//mc:mcash/mc:tran_id/text()" name="tran_id" 
       scope="default" type="STRING" xmlns:mc="http://ws.wso2.org/dataservice" 
       xmlns:ns="http://org.apache.synapse/xsd" /> 
      <log level="custom"> 
       <property expression="$ctx:tran_id" name="tran_id" /> 
      </log> 
      <filter xmlns:mc="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" 
       xpath="boolean(//mc:mcash/mc:mobile_no)"> 
       <then> 
        <property expression="//mc:mcash/mc:tran_id/text()" name="tran_id" 
         scope="default" type="STRING" /> 
        <property expression="//mc:mcash/mc:mobile_no/text()" 
         name="mobile_no" scope="default" type="STRING" /> 
        <property expression="//mc:mcash/mc:tran_amt/text()" name="tran_amt" 
         scope="default" type="STRING" /> 
        <property expression="//mc:mcash/mc:tran_date/text()" 
         name="tran_date" scope="default" type="STRING" /> 
        <property expression="//mc:mcash/mc:tran_time/text()" 
         name="tran_time" scope="default" type="STRING" /> 
        <property expression="//mc:mcash/mc:part_tran_srl_num/text()" 
         name="part_tran_srl_num" scope="default" type="STRING" /> 
        <log level="custom"> 
         <property expression="$ctx:tran_id" name="tran_id" /> 
         <property expression="$ctx:mobile_no" name="mobile_no" /> 
         <property expression="$ctx:tran_amt" name="tran_amt" /> 
         <property expression="$ctx:tran_date" name="tran_date" /> 
         <property expression="$ctx:tran_time" name="tran_time" /> 
         <property expression="$ctx:part_tran_srl_num" name="tran_time" /> 
        </log> 
        <payloadFactory description="pf_mcash" media-type="xml"> 
         <format> 
          <flw:purchaceFromMMR xmlns:flw="http://flw.mwt.mobitel.com/"> 
           <!--Optional: --> 
           <bankPurchaseRequest xmlns=""> 
            <amount>$1</amount> 
            <!--Optional: --> 
            <bankCode>XXX</bankCode> 
            <!--Optional: --> 
            <date>$2</date> 
            <!--Optional: --> 
            <mobile>$3</mobile> 
            <!--Optional: --> 
            <time>$4</time> 
            <!--Optional: --> 
            <transactionId>$5</transactionId> 
           </bankPurchaseRequest> 
          </flw:purchaceFromMMR> 
         </format> 
         <args> 
          <arg evaluator="xml" expression="$ctx:tran_amt" /> 
          <arg evaluator="xml" expression="$ctx:tran_date" /> 
          <arg evaluator="xml" expression="$ctx:mobile_no" /> 
          <arg evaluator="xml" expression="$ctx:tran_time" /> 
          <arg evaluator="xml" expression="$ctx:tran_id" /> 
         </args> 
        </payloadFactory> 
        <call> 
         <endpoint> 
          <address trace="disable" 
           uri="https://my_external_web_service/to_be/called?wsdl"> 
           <enableSec policy="gov:ws-policy/sample_policy.xml" /> 
          </address> 
         </endpoint> 
        </call> 
        <loopback /> 
       </then> 
       <else> 
        <log> 
         <property name="STATUS" value="*****No data available*****" /> 
        </log> 
       </else> 
      </filter> 
     </inSequence> 
     <outSequence> 
      <header action="remove" name="wsse:Security" scope="default" 
       xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" /> 
      <header action="remove" name="To" scope="default" /> 
      <property expression="//return/mobile/text()" name="mobile" 
       scope="default" type="STRING" /> 
      <property expression="//return/date/text()" name="date" 
       scope="default" type="STRING" /> 
      <property expression="//return/recipetNo/text()" name="recipetNo" 
       scope="default" type="STRING" /> 
      <property expression="//return/resultCode/text()" name="resultCode" 
       scope="default" type="STRING" /> 
      <property expression="//return/resultDesc/text()" name="resultDesc" 
       scope="default" type="STRING" /> 
      <payloadFactory description="pf_mcash_update" 
       media-type="xml"> 
       <format> 
        <p:TestUpdate xmlns:p="http://ws.wso2.org/dataservice"> 
         <!--Exactly 1 occurrence --> 
         <p:trf_status>$1</p:trf_status> 
         <!--Exactly 1 occurrence --> 
         <p:resp_code>$2</p:resp_code> 
         <!--Exactly 1 occurrence --> 
         <p:receipt>$3</p:receipt> 
         <!--Exactly 1 occurrence --> 
         <p:rsp_message>$4</p:rsp_message> 
         <!--Exactly 1 occurrence --> 
         <p:tran_id>$5</p:tran_id> 
         <!--Exactly 1 occurrence --> 
         <p:part_tran_srl_num>$6</p:part_tran_srl_num> 
        </p:TestUpdate> 
       </format> 
       <args> 
        <arg value="10" /> 
        <arg evaluator="xml" expression="$ctx:resultCode" /> 
        <arg evaluator="xml" expression="$ctx:recipetNo" /> 
        <arg evaluator="xml" expression="$ctx:resultDesc" /> 
        <arg value="SDC311521" /> 
        <arg evaluator="xml" expression="$ctx:part_tran_srl_num" /> 
       </args> 
      </payloadFactory> 
      <header name="Action" scope="default" value="TestUpdate" /> 
      <property name="Content-Type" scope="transport" type="STRING" 
       value="application/soap+xml; charset=UTF-8; action=TestUpdate" /> 
      <call> 
       <endpoint> 
        <address trace="disable" 
         uri="http://my_internal_data_service/which_ends_up_with/ws_sec_header" /> 
       </endpoint> 
      </call> 
     </outSequence> 
     <faultSequence /> 
    </target> 
</proxy> 

アドバイスをいただきありがとうございます。

答えて

1

コールメディエータの前に次のログメディエータを追加し、出力ログでこれを更新できますか。 これは問題の特定に役立ちます。

<log level="full"> 
      <property name="OutSequence" value="==== OUTSEQ ===="/> 
    </log> 
+0

コメントをお寄せいただきありがとうございます。明確な説明のために、ただちにリクエストを更新しています。私は ' repository/conf/axis2/axis2.xml'に' <! - = =========================================================================================================== > <! - グローバル従事モジュール - > <! - ================================= ================ - > <! - アドレッシング無効にするにはこれをコメントアウト - > <モジュールのREF = "アドレッシング" /> <モジュールのREF =」 rampart "/>これは正しいですか?それは、すべてのサービスが暴力を巻き起こすグローバルな関与のようなものでしょうか? – Yasothar

1

問題は、私が<ESB_HOME>repository/conf/axis2/で見つかったaxis2.xmlをして城壁モジュール<module ref="rampart" />を行っていました。この行をコメントアウトした後、例外はなくなり、dss呼び出しが機能しました。このコード行が有効になっている場合、私は信じている理由は、WS-securiyは、グローバルに従事され、すべてのサービスコールは、WS-Securityのヘッダを探します。とにかく私が間違っているなら、私を修正してください。

関連する問題