[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Basic authentication fails probably because of Base64 enconding



Thanks to everybody!
I undertood the issue and worked around it with Thomas solution!
Best regards

Mirco Andreon

Il 04/12/2012 19:29, Thomas Raddatz ha scritto:

When a program is called from the command line, only the first 32 bytes of each parameter are initialized with blanks. Hence the content of bytes 33-50 are unpredictable for your "email" parameter.

If your email address does not contain any spaces, you may try the following approach, that I adopted from the IBM XML Toolkit example programs:

C                   parm                    gi_email         50

D email           S             50A   varying inz

email = %trimR(%subst(gi_email: 1: %scan(' ': gi_email)));

It seems as if IBM is sure that the last character of each parameter (greater than 32 bytes) is always a BLANK.

Thomas.

Am 04.12.2012 17:14, schrieb Mirco Andreon:
I found the real problem: I was treating SOAP request and response as if they wrapped XML as a string (with < and > encoding) and not
    as real XML. So it is even simpler than I thought.
    I'm sorry if I made loose your time reading about my issue...
    Anyway this is the last question:
    I have an input param for my program:

      C                   parm email            50

    I use it in HTTP authentication:

http_setAuth( HTTP_AUTH_BASIC : %trim(email) : '');

    but seems like %trim doesn't work... it passes a string like
    '[1]aaa@xxxxxxx         ' followed by invalid chars...
Moreover, if they pass an empty string for email param, I would like to
    set a default value for it ('[2]bubi@xxxxxxxxxxx'). I tried this:

      if %trim(email) = *blanks;
        email = '[3]bubi@xxxxxxxxxxx';
      endif;

    but doesn't enter if-block.
    Could give me an hint? I'm new to RPGLE. Thanks!
Mirco Andreon
==========================================
Il 04/12/2012 14:11, Mirco Andreon ha scritto:

    More info: it seems not to be an encoding problem. If I try with a
    string literal instead of a variable
    http_setAuth( HTTP_AUTH_BASIC : '[[4]1]bubi@xxxxxxxxxxx' : '');
    the encoding is ok (YnViaUBleGFtcGxlLm9yZzo=).
So this is not the problem. All seems the same now on both Web Services Explorer and HTTPAPI, but the latter doesn't work (always Bad Request).
Mirco Andreon

Il 04/12/2012 11:02, Mirco Andreon ha scritto:

    Hello, I'm trying to invoke this web service:

      WSDL: [2][5]http://www.nexusonline.it:8088/4DWSDL
      endpoint: [3][6]http://www.nexusonline.it:8088/4DSOAP/
      instructions: [4][7]http://www.nexusonline.it:8088/esempio4d
      method: Get_BankFromCAB
          parameters:
              ABI, 5 chars code
              CAB, 5 chars code
Authentication: basic with an email as username and an empty string
      as password

    This is how Eclipse Web Services Explorer allows me to invoke it
    (following is Wireshark capture of the HTTP request):

      POST /4DSOAP/ HTTP/1.1
      Host: [5]www.nexusonline.it:8088
      Content-Type: text/xml; charset=utf-8
      Content-Length: 590
      Accept: application/soap+xml, application/dime, multipart/related,
      text/*
      User-Agent: IBM Web Services Explorer
      Cache-Control: no-cache
      Pragma: no-cache
      SOAPAction: "Nexus_WebService#Get_BankFromCAB"
      Authorization: Basic YnViaUBleGFtcGxlLm9yZzo=
      Connection: close

    [SOAP envelope omitted, because it's like mine]
    and it works.
    This is how I invoke it by HTTPAPI:

      http_setAuth( HTTP_AUTH_BASIC : %trim(email) : '');
      rc = http_url_post(
'[6][8]http://www.nexusonline.it:8088/4DSOAP/'
                        : %addr(SoapReq)+2
                        : %len(SoapReq)
                        : soapfile
                        : HTTP_TIMEOUT
                        : HTTP_USERAGENT
                        : 'text/xml; charset=utf-8'
                        : '"Nexus_WebService#Get_BankFromCAB"' );

    and it doesn't work.
    This is an extract from '/tmp/httpapi_debug.txt':

      POST /4DSOAP/ HTTP/1.1
      Host: [7]www.nexusonline.it:8088
      User-Agent: http-api/1.24
      Content-Type: text/xml; charset=utf-8
      SOAPAction: "Nexus_WebService#Get_BankFromCAB"
      Content-Length: 594
      Authorization: Basic
YnViaUBleGFtcGxlLm9yZyAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAA6

    [if I read further I can see SOAP response saying
<SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>Bad
    Request.</SOAP-ENV:Fault>]
    The only difference I see is Authorization parameter. I always use
username [8][9]"bubi@xxxxxxxxxxx" and empty password, but seems HTTPAPI is
    encoding in a slightly different way. Also putting double-quotes in
    SOAP action seems strange to me but I don't think it's the problem.
    Any help is appretiated, thanks!
--
Mirco Andreon

References

    1. [10]mailto:bubi@xxxxxxxxxxx
    2. [11]http://www.nexusonline.it:8088/4DWSDL
    3. [12]http://www.nexusonline.it:8088/4DSOAP/
    4. [13]http://www.nexusonline.it:8088/esempio4d
    5. [14]http://www.nexusonline.it:8088/
    6. [15]http://www.nexusonline.it:8088/4DSOAP/
    7. [16]http://www.nexusonline.it:8088/
    8. [17]mailto:bubi@xxxxxxxxxxx


-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
[18]http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------

References

    1. mailto:aaa@xxxxxxx
    2. mailto:bubi@xxxxxxxxxxx
    3. mailto:bubi@xxxxxxxxxxx
    4. mailto:1]bubi@xxxxxxxxxxx
    5. http://www.nexusonline.it:8088/4DWSDL
    6. http://www.nexusonline.it:8088/4DSOAP/
    7. http://www.nexusonline.it:8088/esempio4d
    8. http://www.nexusonline.it:8088/4DSOAP/
    9. mailto:bubi@xxxxxxxxxxx
   10. mailto:bubi@xxxxxxxxxxx
   11. http://www.nexusonline.it:8088/4DWSDL
   12. http://www.nexusonline.it:8088/4DSOAP/
   13. http://www.nexusonline.it:8088/esempio4d
   14. http://www.nexusonline.it:8088/
   15. http://www.nexusonline.it:8088/4DSOAP/
   16. http://www.nexusonline.it:8088/
   17. mailto:bubi@xxxxxxxxxxx
   18. http://www.scottklement.com/mailman/listinfo/ftpapi



-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------


-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------