9 Replies Latest reply: Jul 26, 2012 6:30 AM by Sylvain YVON RSS

    Problem consuming a webservice with "mustUnderstand"

    Daniel Tillberg

      Hi,

       

      We are on 7.604 SP1 and trying to consume a webservice with a security header. The webservice works in SOAP UI but not when trying to consume.

       

      Here's the error AR gives me:

       

      2011-09-20 15:50:06,677 ERROR [pool-2-thread-1] com.bmc.arsys.pluginsvr.plugins.ARPluginContext (?:?) - <ARSYS.ARF.WEBSERVICE>Did not understand "MustUnderstand" header(s):{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security

      2011-09-20 15:50:06,677 ERROR [pool-2-thread-1] com.bmc.arsys.pluginsvr.plugins.ARPluginContext (?:?) - <ARSYS.ARF.WEBSERVICE>java.lang.NullPointerException

      2011-09-20 15:50:06,677 ERROR [pool-2-thread-1] com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPluginRepository (?:?) - ARFilterApiCall FAILs in plugin: ARSYS.ARF.WEBSERVICE

      ERROR (9130): Message not in catalog; Message number = 9130

                 at com.bmc.arsys.ws.plugin.WSPlugin.ThrowException(WSPlugin.java:158)

                 at com.bmc.arsys.ws.plugin.WSPlugin.filterAPICall(WSPlugin.java:151)

                 at com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPluginRepository.ARFilterApiCall(Unknown Source)

                 at com.bmc.arsys.pluginsvr.a.ArEsFilterApi_5(Unknown Source)

                 at com.bmc.arsys.pluginsvr.a.ArEsFilterApi_4(Unknown Source)

                 at com.bmc.arsys.arrpc.ARPluginServerDispatcher.dispatchOncRpcCall(Unknown Source)

                 at com.bmc.arsys.arrpc.nio.ArRpcCallHandler.dispatchCall(Unknown Source)

                 at com.bmc.arsys.arrpc.nio.ArRpcCallHandler.if(Unknown Source)

                 at com.bmc.arsys.arrpc.nio.ArRpcCallHandler.processRpcCall(Unknown Source)

                 at com.bmc.arsys.arrpc.nio.ArRpcCallHandler$Processor.run(Unknown Source)

                 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

                 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

                 at java.lang.Thread.run(Unknown Source)

       

       

      Any ideas?

        • 1. Problem consuming a webservice with "mustUnderstand"
          Sylvain YVON

          Hi,

           

          Is it working when you consume it with SOAPUI, not when you consume it with ARS ?

          Can you post a screenshot of your Filter Set Field action with the mapping as it is understood by Dev Studio ?

          If it's displaying a "SOAPHeader" section with "Security", have you tried to clear it or simply right-click on it to delete ? (not sure it's possible)

           

          Sylvain

          • 2. Problem consuming a webservice with "mustUnderstand"
            Daniel Tillberg

            Thank you for your answer. No it's not possible to remove the header.

             

            webservice.jpg

            • 3. Problem consuming a webservice with "mustUnderstand"
              Sylvain YVON

              Have you tried to tune the Authentication setting and the Mapping Info for the Password field ?

               

              If you want to compare SOAP UI and ARS requests, you can create a mockService in SOAP UI based on the web service WSDL and make the filter consume it. That would give you a fair idea of what the problem could be.

              • 4. Problem consuming a webservice with "mustUnderstand"
                Daniel Tillberg

                It was a not supported webservice;

                 

                "

                AXIS 1.4 which is bundled with Remedy AR since 7.5 onwards (correction - during phoce call I said AR 7.x) sets the mustunderstand attribute to 1 if it finds SOAP header information in the Client request to the Webservice (AR or External) for example WS Security information like username and password.  When SOAP header information is sent out, the mustunderstand attribute is set to 1 which otherwise is 0;  Because this attribute is set to 1, the Webservice is not able to understand it and thus the error. 

                 

                For example in ARS 7.1:

                 

                <soapenv:Header>

                  <ns1:AuthenticationInfo soapenv:actor="" soapenv:mustUnderstand="0" xmlns:ns1="urn:_ExternalCases_KIT_A_Get">

                    <ns1:userName>Demo</ns1:userName>

                    <ns1:password/>

                    <ns1:authentication/>

                    <ns1:locale/>

                    <ns1:timeZone/>

                  </ns1:AuthenticationInfo>

                </soapenv:Header>

                 

                The same request with ARS 7.5:

                 

                <soapenv:Header>

                  <ns1:AuthenticationInfo soapenv:actor="" soapenv:mustUnderstand="1" xmlns:ns1="urn:_ExternalCases_KIT_A_Get">

                    <ns1:userName>Demo</ns1:userName>

                    <ns1:password/>

                    <ns1:authentication/>

                    <ns1:locale/>

                    <ns1:timeZone/>

                  </ns1:AuthenticationInfo>

                </soapenv:Header>

                 

                 

                AXIS 1.4 does not have option to tweak this mustunderstand attribute.  In the earlier versions of AXIS, this attribute was sent with 0 value.  AXIS 2 has feature of setting this attribute either with 0 or 1 value which should be ideal for consuming your webservice.  There are chances of using AXIS 2 in the future versions of AR, however with the current version of AR 7.6.04, it is not possible to workaround from AR perspective. 

                 

                I dont know if there is a way for the developer of your external webservice to do something in their application to accomodate the current request of AR 7.6.04 which contains SOAP header information and mustunderstand set to 1."

                • 5. Problem consuming a webservice with "mustUnderstand"
                  sudeep kumar

                  Hi Dice/Syvon,

                   

                  I am also getting the same error while consuming the webservice. i am using ars version 7.5 Is there a way to get around this issue?

                   

                   

                  Thanks

                  Sudeep

                  • 6. Problem consuming a webservice with "mustUnderstand"
                    Sylvain YVON

                    Hi again,

                     

                    Dice, have you found a work around to consume the web service ?

                    I'm running into the same problem right now.

                     

                    Thanks

                    Sylvain

                    • 7. Problem consuming a webservice with "mustUnderstand"
                      Daniel Tillberg

                      Hi!

                       

                      No, we did a workaround with another webservice made with .NET. So we got a two layer webservice flow.

                      Not the best but it works for us.

                      • 8. Re: Problem consuming a webservice with "mustUnderstand"
                        Sylvain YVON

                        Thanks for your feedback.

                        I can't spend more time on the matter right now but it looks like there could be some way to integrate an xsd part to a local copy of the wsdl with :

                        <xsd:attribute ref="soap:mustUnderstand" use="prohibited" />

                        Of course it requires a major editing of the wsdl, without a garanteed result.

                        • 9. Re: Problem consuming a webservice with "mustUnderstand"
                          Sylvain YVON

                          Just to let people know, the "use=prohibited" didn't solve the problem.

                          A way to work around it though is to drop the authentication header from the wsdl and set an anonymous login in the "web service settings" page of the MT.