cURL with Perl

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • rottmanj
    New Member
    • Jan 2008
    • 46

    cURL with Perl

    I am working on a revamp of a previous application that I have written in coldfusion. The application deals with RETS data. The issue that I am having is with using the curl option HTTP_AUTH and CURLAUTH_DIGEST .

    When attempting to authenticate against the server. No matter what I try, my authentication always fails. I have made sure to validate the auth information.

    In my testings, I have also verified that curl can authenticate via the command line option.

    Here is my current testing code base.

    Code:
           
    my $curl= new WWW::Curl::easy;
    $curl->setopt(CURLOPT_VERBOSE,1); 
    $curl->setopt(CURLOPT_HTTPAUTH,CURLAUTH_ANY);  
    $curl->setopt(CURLOPT_USERPWD, '$user:$pass'); 
    $curl->setopt(CURLOPT_URL, $site);
    my $retcode = $curl->perform;
    
    print $retcode;

    This is the error I receive back.

    < HTTP/1.1 401 Unauthorized
    HTTP/1.1 401 Unauthorized
    < Content-Length: 1944
    Content-Length: 1944
    < Content-Type: text/html
    Content-Type: text/html
    < Server: Microsoft-IIS/6.0
    Server: Microsoft-IIS/6.0
    < X-Powered-By: ASP.NET
    X-Powered-By: ASP.NET
    < WWW-Authenticate: Digest qop="auth",real m="rets@marketl inx.com",nonce= "343baa915fcdf5 13c28822dd5e99f 683",opaque="06 0518134015940"
    WWW-Authenticate: Digest qop="auth",real m="rets@marketl inx.com",nonce= "343baa915fcdf5 13c28822dd5e99f 683",opaque="06 0518134015940"
    < Date: Tue, 06 May 2008 18:13:40 GMT
    Date: Tue, 06 May 2008 18:13:40 GMT
    < Connection: close
    Connection: close
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    Originally posted by rottmanj
    I am working on a revamp of a previous application that I have written in coldfusion. The application deals with RETS data. The issue that I am having is with using the curl option HTTP_AUTH and CURLAUTH_DIGEST .

    When attempting to authenticate against the server. No matter what I try, my authentication always fails. I have made sure to validate the auth information.

    In my testings, I have also verified that curl can authenticate via the command line option.

    Here is my current testing code base.

    Code:
           
    my $curl= new WWW::Curl::easy;
    $curl->setopt(CURLOPT_VERBOSE,1); 
    $curl->setopt(CURLOPT_HTTPAUTH,CURLAUTH_ANY);  
    $curl->setopt(CURLOPT_USERPWD, '$user:$pass'); 
    $curl->setopt(CURLOPT_URL, $site);
    my $retcode = $curl->perform;
    
    print $retcode;

    This is the error I receive back.

    < HTTP/1.1 401 Unauthorized
    HTTP/1.1 401 Unauthorized
    < Content-Length: 1944
    Content-Length: 1944
    < Content-Type: text/html
    Content-Type: text/html
    < Server: Microsoft-IIS/6.0
    Server: Microsoft-IIS/6.0
    < X-Powered-By: ASP.NET
    X-Powered-By: ASP.NET
    < WWW-Authenticate: Digest qop="auth",real m="rets@marketl inx.com",nonce= "343baa915fcdf5 13c28822dd5e99f 683",opaque="06 0518134015940"
    WWW-Authenticate: Digest qop="auth",real m="rets@marketl inx.com",nonce= "343baa915fcdf5 13c28822dd5e99f 683",opaque="06 0518134015940"
    < Date: Tue, 06 May 2008 18:13:40 GMT
    Date: Tue, 06 May 2008 18:13:40 GMT
    < Connection: close
    Connection: close
    I would check, without using your script, that you can log into the website first. The error "Unauthoriz ed" is telling me you cannot.

    Regards,

    Jeff

    Comment

    • rottmanj
      New Member
      • Jan 2008
      • 46

      #3
      I have already verified that I am able to log in. The Unauthorized is part of the ResponseHeaders that I receive back.

      Comment

      • nithinpes
        Recognized Expert Contributor
        • Dec 2007
        • 410

        #4
        Originally posted by rottmanj
        I am working on a revamp of a previous application that I have written in coldfusion. The application deals with RETS data. The issue that I am having is with using the curl option HTTP_AUTH and CURLAUTH_DIGEST .

        When attempting to authenticate against the server. No matter what I try, my authentication always fails. I have made sure to validate the auth information.

        In my testings, I have also verified that curl can authenticate via the command line option.

        Here is my current testing code base.

        Code:
               
        my $curl= new WWW::Curl::easy;
        $curl->setopt(CURLOPT_VERBOSE,1); 
        $curl->setopt(CURLOPT_HTTPAUTH,CURLAUTH_ANY);  
        $curl->setopt(CURLOPT_USERPWD, '$user:$pass'); 
        $curl->setopt(CURLOPT_URL, $site);
        my $retcode = $curl->perform;
        
        print $retcode;

        This is the error I receive back.

        < HTTP/1.1 401 Unauthorized
        HTTP/1.1 401 Unauthorized
        < Content-Length: 1944
        Content-Length: 1944
        < Content-Type: text/html
        Content-Type: text/html
        < Server: Microsoft-IIS/6.0
        Server: Microsoft-IIS/6.0
        < X-Powered-By: ASP.NET
        X-Powered-By: ASP.NET
        < WWW-Authenticate: Digest qop="auth",real m="rets@marketl inx.com",nonce= "343baa915fcdf5 13c28822dd5e99f 683",opaque="06 0518134015940"
        WWW-Authenticate: Digest qop="auth",real m="rets@marketl inx.com",nonce= "343baa915fcdf5 13c28822dd5e99f 683",opaque="06 0518134015940"
        < Date: Tue, 06 May 2008 18:13:40 GMT
        Date: Tue, 06 May 2008 18:13:40 GMT
        < Connection: close
        Connection: close
        Using single quotes around variables will block the substitution of those variables(will be considered literal string). Change:
        Code:
        $curl->setopt(CURLOPT_USERPWD, '$user:$pass');
        to

        Code:
        $curl->setopt(CURLOPT_USERPWD, "$user:$pass");
        That's how this line should be, though this may/may not solve your issue.

        Comment

        • rottmanj
          New Member
          • Jan 2008
          • 46

          #5
          I am having a heck of a time getting this to work. Every example that I have found uses pretty much what I have here.

          At first glance it looks like it is trying to use Basic auth, but I know for a fact that this server uses digest auth.

          As I have said before.

          Verified that server uses Digest auth
          Verified username and password
          Verified that URI
          Tried with '$user:$pass' and "$user:$pas s"

          Any help with this would be greatly appreciated.

          Here is the output that I get from my app.

          Code:
          About to connect() to rets.armls.mlsrets.com port 80 (#0)
            Trying 65.83.83.235... connected
          Connected to rets.armls.mlsrets.com (65.83.83.235) port 80 (#0)
          Server auth using Basic with user '*********'
          GET /rets/login HTTP/1.1
          Authorization: Basic Q1JJTDAxOkpuITIzQA==
          Host: rets.armls.mlsrets.com
          Accept: */*
          
          
          HTTP/1.1 401 Unauthorized
          HTTP/1.1 401 Unauthorized
          Content-Length: 1944
          Content-Length: 1944
          Content-Type: text/html
          Content-Type: text/html
          Server: Microsoft-IIS/6.0
          Server: Microsoft-IIS/6.0
          X-Powered-By: ASP.NET
          X-Powered-By: ASP.NET
          WWW-Authenticate: Digest qop="auth",realm="rets@marketlinx.com",nonce="44722adb40435c5b13ac90bd5704d271",opaque="14052119422857"
          WWW-Authenticate: Digest qop="auth",realm="rets@marketlinx.com",nonce="44722adb40435c5b13ac90bd5704d271",opaque="14052119422857"
          Date: Wed, 14 May 2008 21:19:41 GMT
          Date: Wed, 14 May 2008 21:19:41 GMT
          Connection: close
          Connection: close
          Last edited by eWish; May 14 '08, 10:59 PM. Reason: Please use code tags for data as well

          Comment

          Working...