[ http://issues.apache.org/jira/browse/XMLRPC-65?page=all ]
     
Jochen Wiedmann closed XMLRPC-65:
---------------------------------

    Resolution: Won't Fix

The method is deprecated, because specifying the credentials is transport 
specific and XmlRpcClient.setBasicAuthentication binds you to the sun 
transport. I have added an FAQ entry, which shows the recommended way to 
specify credentials.


> HTTP Basic Authentication is unusable
> -------------------------------------
>
>          Key: XMLRPC-65
>          URL: http://issues.apache.org/jira/browse/XMLRPC-65
>      Project: XML-RPC
>         Type: Bug

>   Components: Releases, Source
>     Versions: 2.0
>     Reporter: Oded Arbel

>
> XmlRpcClient support for HTTP Basic Authentication is unusable.
> Apparently while calling XmlRpcClient.setBasicAuthentication() still works, 
> it is deprecated and there is no simple alternative to use.
> The only other option is to create a DefaultXmlRpcTransportFactory, calling 
> setBasicAuthentication() on it, and the passing it in the constructor to 
> XmlRpcClient. this is bad for two reasons:
> 1) the URL has to be specified twice - once in the c'tor of the factory and 
> once in the c'tor of the client.
> 2) It doesn't work - DefaultXmlRpcTransportFactory is broken and when using 
> non-SSL connections, it does not initialize created transports with the basic 
> authentication information (one reason is probably that the transport's c'tor 
> that takes encoded basic auth is deprecated and as the factory saves auth 
> information encoded, it has no way of providing it to the transport).
> Currently the only way I can make it work is to subclass 
> DefaultXmlRpcTransportFactory and implement my own createTransport() call 
> that calls setBasicAuthentication() on the created transport using externally 
> stored auth info. This is undocumented and incredibly clanky.
> Possible Solutions:
> a) undeprecate XmlRpcClient.setBasicAuthentication(). 
> I don't see any reason not to let it work by doing what it currently does 
> when no factory is supplied. If the user has supplied a factory then either 
> XmlRpcClient can call setBasicAuthentication() on the factory or createed 
> transport with the stored credentials (unlike factory, client stores the 
> unencoded credentials), or it can just do what it currently does in that case 
> (i.e. nothing) and assume that the provided factory knows how to 
> setBasicAuthentication() properly
> b) Fix DefaultXmlRpcTransportFactory by storing the unencoded credentials and 
> calling setBasicAuthentination() on the created transport before returning it.
> c) undeprecate the XmlRpcTransport c'tor that takes encoded auth info and let 
> DefaultXmlRpcTransportFactory use that to construct transports.
> Also, either a+b or a+c can be implemented.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to