Using Java Web Start and Axis together is a great idea.  But there is a design flaw 
that prevents using the combination in professional-quality internet-aware 
applications.  Any solutions or workarounds would be greatly welcome.

Description:

1) Problem occurs only when working with a proxy, and when the proxy requires 
username/password authentication.  Things work fine in all other situations.

2) I am aware that Axis obtains proxy host and port information from the system 
properties http.proxyHost and http.proxyPort.  Not a problem, since Java Web Start 
uses proxyHost and proxyPort and it is a simple matter to copy the values.

3) Java Web Start brings up a proxy login dialog box before the application starts up 
(since it needs to check/retrieve the latest version of the code).  It assumes that 
the application will rely on HttpURLConnection and therefore inherit the 
DefaultAuthenticator (from Java Web Start).

4) Java Web Start provides no mechanism to extract the username and password from the 
initial proxy login.  Sun appears to want things to remain this way.  Therefore using 
Call.setUsername() and Call.setPassword does not really help.

5) It is possible to call Authenticator.requestPasswordAuthentication() to bring up a 
popup login for the proxy username and password.

The problem is that we can justify to the user the application login as a business 
necessity, and the initial proxy login as Sun's unfriendly and lame implementation of 
Java Web Start, but it is impossible to justify a second proxy login.

We have found a temporary workaround by (a) Using a raw socket (not an 
HttpURLConnection in order to bypass Java Web Start) to query the proxy for its proxy 
prompt, and (b) Supplying the host, port and prompt to 
requestPasswordAuthentication().  If the values match the ones used by the initial 
proxy login, a second login screen is not displayed but the PasswordAuthentication 
object is returned with the username and password.  Unfortunately, Sun considers this 
behavior a security bug and plans to block it in the upcoming JRE 1.4.2.

Note, this problem also happens when using the older Apache SOAP.

Can someone suggest a solution to this problem?

Bruno


Reply via email to