Hi folks...
I am trying to use SoapProvisioning in order to connect to a remote ZCS 6.0 server over Linux, but can't figure a way to pass the AuthRequest namespace (xmlns = "urn:zimbraAccount") to the SoapProvisioning object, thus having the authentication failing with an UNKNOWN_DOCUMENT exception (i.e., AuthRequest is not recognized!).
My code can connect flawlessly to the ZCS server using plain vanilla SOAP (<AuthRequest xmlns="urn:zimbraAccount"> etc.), as prescribed in docs/soap.txt. Furthermore, at a higher level of abstraction, I can replicate the same behaviour by "manually" invocating the proper request object, as follows:
XMLElement request = new XMLElement("AuthRequest");
request.addAttribute("xmlns", "urn:zimbraAccount");
XMLElement accountElement = new XMLElement("account");
accountElement.setText(username);
XMLElement passwordElement = new XMLElement("password");
passwordElement.setText(password);
request.addElement(accountElement);
request.addElement(passwordElement);
SoapHttpTransport transport = new SoapHttpTransport("http://server.domain/service/soap/");
transport.invoke(request);
However, as already explained, if I try something like
SoapProvisioning sp = new SoapProvisioning();
sp.soapSetURI("http://server.domain/service/soap/");
sp.soapAdminAuthenticate(username, password);
an exception occurs (com.zimbra.common.soap.SoapFaultException: unknown document: AuthRequest).
All the code examples I have seen employing SoapProvisioning, use HTTPS and login to an admin account.
Does this mean that SoapProvisioning cannot authenticate a simple user account without previously authenticating an admin?
Is there any way of authenticating a user account without "manually" constructing the command sequence and using sp.invoke()?
Thanks!