soap4r with digest authentication

R

Ryan Q.

Hello all,

I've been trying to get digest authentication working for soap calls for
two weeks now. All the examples I find seem to be flawed. Here's the
code that I'm using which is right out of the httpclient docs.

require 'httpclient'
require "soap/wsdlDriver"
require 'soap/rpc/driver'
require 'uri'

user = "admin"
pass = "pass"
wsdl = "http://someserver/file.wsdl"

driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
driver.instance_methods
driver.options["protocol.http.digest_auth"] <<
['http://someserver/SoapServer.php', user, pass]

info = driver.GetSystemInformation('')
puts info

I've changed the server url because I don't want to expose it's
location.

The error I get is:
c:/ruby/lib/ruby/1.8/soap/property.rb:269:in `check_lock': cannot add
any key to locked property (TypeError)
from c:/ruby/lib/ruby/1.8/soap/property.rb:192:in
`local_referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:230:in `referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:106:in `[]'
from C:/Documents and Settings/Administrator/Desktop/mxpua.rb:19

The line numbers in mxpua.rb won't match up, but I'm sure you guys see
where it's failing.

Any help with this would be great. I can't understand how all the
examples I find would all be wrong, but they all seem to use the same
process to add the digest auth information to the object.

Thanks for your help.

-Ryan
 
P

Phillip Gawlowski

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ryan Q. wrote:
| Anyone? I'd really appreciate the help.

Wild guess: You are using SSL where you shouldn't, or you aren't using
SSL where you should?

Can't be of more help, though.

- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan
Blog: http://justarubyist.blogspot.com

~ "Summer is butter on your chin and corn mush between every tooth."
- -Calvin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkgp8t8ACgkQbtAgaoJTgL8zOgCdG/VS4j6iJaOoB4VahLVoeygq
2nYAmwYCHZYq5e0iX8Z0Dl0S5g2OUKXm
=rwPh
-----END PGP SIGNATURE-----
 
R

Ryan Q.

Phillip,

SSL shouldn't be a factor here. The service I'm trying to access is
clear-text http. Just using digest authentication.

The error that I'm getting in Ruby looks to be that I can't modify the
'driver' object once it's been created.

I'm guessing that there is either a way to pass those options as the
object is getting created or there is a different syntax to modify the
object after it's been created, but before the SOAP call gets sent.

Thanks,
Ryan
 
S

Sb Po

Hello,

I have a bit of information, if you are still working on this.

I believe this line
driver.options["protocol.http.digest_auth"]

should really be
driver.options["protocol.http.auth"]

If the server accepts basic authentication, that will be used.
If the server accepts digest authentication, that will be used.

I send authentication information to the server in both cases,
but only the first option (basic) is accepted by the server.

I would like to know if it works for you now?

Soren






Hello all,

I've been trying to get digest authentication working for soap calls for
two weeks now. All the examples I find seem to be flawed. Here's the
code that I'm using which is right out of the httpclient docs.

require 'httpclient'
require "soap/wsdlDriver"
require 'soap/rpc/driver'
require 'uri'

user = "admin"
pass = "pass"
wsdl = "http://someserver/file.wsdl"

driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
driver.instance_methods
driver.options["protocol.http.digest_auth"] <<
['http://someserver/SoapServer.php', user, pass]

info = driver.GetSystemInformation('')
puts info

I've changed the server url because I don't want to expose it's
location.

The error I get is:
c:/ruby/lib/ruby/1.8/soap/property.rb:269:in `check_lock': cannot add
any key to locked property (TypeError)
from c:/ruby/lib/ruby/1.8/soap/property.rb:192:in
`local_referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:230:in `referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:106:in `[]'
from C:/Documents and Settings/Administrator/Desktop/mxpua.rb:19

The line numbers in mxpua.rb won't match up, but I'm sure you guys see
where it's failing.

Any help with this would be great. I can't understand how all the
examples I find would all be wrong, but they all seem to use the same
process to add the digest auth information to the object.

Thanks for your help.

-Ryan
 
D

David Medinets

Ryan said:
The error I get is:
c:/ruby/lib/ruby/1.8/soap/property.rb:269:in `check_lock': cannot add
any key to locked property (TypeError)
from c:/ruby/lib/ruby/1.8/soap/property.rb:192:in
`local_referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:230:in `referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:106:in `[]'
from C:/Documents and Settings/Administrator/Desktop/mxpua.rb:19

Are you running into this issue? I am trying to perform basic
authentication and getting the same exception.
 
R

Ryan Q.

Yup, still getting the same error.

This change suggested above didn't help either.

I believe this line
driver.options["protocol.http.digest_auth"]

should really be
driver.options["protocol.http.auth"]






David said:
Ryan said:
The error I get is:
c:/ruby/lib/ruby/1.8/soap/property.rb:269:in `check_lock': cannot add
any key to locked property (TypeError)
from c:/ruby/lib/ruby/1.8/soap/property.rb:192:in
`local_referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:230:in `referent'
from c:/ruby/lib/ruby/1.8/soap/property.rb:106:in `[]'
from C:/Documents and Settings/Administrator/Desktop/mxpua.rb:19

Are you running into this issue? I am trying to perform basic
authentication and getting the same exception.
 
D

David Medinets

Ryan said:
Yup, still getting the same error.

I'm collaborating with a Ruby expert tomorrow to see if we can't find a
fix or workaround. I'll update this thread if we succeed.
 
R

Ryan Q.

That would be great. Let me know how it turns out.

I gave up using Ruby because of this. I wanted to move from Perl to Ruby
for SOAP type services, but no love.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top