JDK-4636657 : Applet does not load when using MS ISA-Server and Basic Authentication
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 1.4.0
  • Priority: P4
  • Status: Closed
  • Resolution: Won't Fix
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2002-02-12
  • Updated: 2002-05-01
  • Resolved: 2002-05-01
Description

Name: gm110360			Date: 02/12/2002


FULL PRODUCT VERSION :
java version "1.4.0-rc"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-rc-b91)
Java HotSpot(TM) Client VM (build 1.4.0-rc-b91, mixed mode)

FULL OPERATING SYSTEM VERSION :
Windows 2000 5.1 x86
locale: NL


A DESCRIPTION OF THE PROBLEM :
The client tries to access a password-protected website
containing an applet (Java 1.2 Swing) splitted in 4 jars.
The web-server (Apache) is additionally protected by a
proxy in our DMZ.
The HTML-pages and the jars for the applet are both
protected by authentication basic.

The client uses Internet-Explorer, Java-Plugin 1.4.0-RC1
and Microsoft ISA-Server for accessing the internet. The
browser loads the HTML-pages after entering the user and
password, but the plugin can not load the applet. It
returns the following error:

java.io.IOException: Server returned HTTP response code:
407 for URL: http://myurl.com/myjar.jar

	at
sun.net.www.protocol.http.HttpURLConnection.getInputStream
(HttpURLConnection.java:691)

	at
sun.plugin.net.protocol.http.HttpURLConnection.getInputStrea
m(HttpURLConnection.java:369)

	at
sun.net.www.protocol.http.HttpURLConnection.getHeaderFields
(HttpURLConnection.java:1133)

	at
sun.plugin.net.protocol.http.HttpURLConnection.checkCookieHe
ader(HttpURLConnection.java:330)

	at
sun.plugin.net.protocol.http.HttpURLConnection.getInputStrea
m(HttpURLConnection.java:367)

	at
sun.plugin.net.protocol.http.HttpUtils.followRedirects
(HttpUtils.java:39)

	at sun.plugin.cache.CachedJarLoader.download
(CachedJarLoader.java:311)

	at sun.plugin.cache.CachedJarLoader.load
(CachedJarLoader.java:131)

	at sun.plugin.cache.JarCache.get(JarCache.java:175)

	at
sun.plugin.net.protocol.jar.CachedJarURLConnection.connect
(CachedJarURLConnection.java:71)

	at
sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFil
e(CachedJarURLConnection.java:56)

	at sun.misc.URLClassPath$JarLoader.getJarFile
(URLClassPath.java:498)

	at sun.misc.URLClassPath$JarLoader.<init>
(URLClassPath.java:459)

	at sun.misc.URLClassPath$2.run
(URLClassPath.java:255)

	at java.security.AccessController.doPrivileged
(Native Method)

	at sun.misc.URLClassPath.getLoader
(URLClassPath.java:244)

	at sun.misc.URLClassPath.getLoader
(URLClassPath.java:221)

	at sun.misc.URLClassPath.getResource
(URLClassPath.java:134)

	at java.net.URLClassLoader$1.run
(URLClassLoader.java:190)

	at java.security.AccessController.doPrivileged
(Native Method)

	at java.net.URLClassLoader.findClass
(URLClassLoader.java:186)

	at sun.applet.AppletClassLoader.findClass
(AppletClassLoader.java:132)

	at sun.plugin.security.PluginClassLoader.findClass
(PluginClassLoader.java:189)

	at java.lang.ClassLoader.loadClass
(ClassLoader.java:306)

	at sun.applet.AppletClassLoader.loadClass
(AppletClassLoader.java:112)

	at java.lang.ClassLoader.loadClass
(ClassLoader.java:262)

	at sun.applet.AppletClassLoader.loadCode
(AppletClassLoader.java:473)

	at sun.applet.AppletPanel.createApplet
(AppletPanel.java:548)

	at sun.plugin.AppletViewer.createApplet
(AppletViewer.java:1621)

	at sun.applet.AppletPanel.runLoader
(AppletPanel.java:477)

	at sun.applet.AppletPanel.run(AppletPanel.java:290)

	at java.lang.Thread.run(Thread.java:536)

Another client who uses a different proxy-software
(WinProxy from Ositis) reports no problems.

An overview of the connection:


Client (Internet Explorer 5)
  |
Client Proxy (Microsoft ISA-Server)
  |
Internet
  |
DMZ Proxy
  |
Webserver (Apache)

Is this a problem of the ISA-Server or does the plugin not
know what to do with a HTTP-status of 407 ? Usually it
should display the dialog for entering user and password,
but it does not do so !! If there is no solution, it will
make applets on protected site not useable.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. create a password protected website with a Java 1.2
Applet (basic authentication)
2. protect the webserver by using a proxy in the DMZ
3. connect from client by using ISA-Server from Microsoft

EXPECTED VERSUS ACTUAL BEHAVIOR :
Expected:
The plugin shows up a dialog for entering user and password
for authentication basic and after entering show the applet

Actual:
dialog does not appear and applet only shows
ClassNotFoundException, console shows stack trace

ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.io.IOException: Server returned HTTP response code: 407 for URL:
http://myurl.com/myjar.jar

	at sun.net.www.protocol.http.HttpURLConnection.getInputStream
(HttpURLConnection.java:691)

	at sun.plugin.net.protocol.http.HttpURLConnection.getInputStream
(HttpURLConnection.java:369)

	at sun.net.www.protocol.http.HttpURLConnection.getHeaderFields
(HttpURLConnection.java:1133)

	at sun.plugin.net.protocol.http.HttpURLConnection.checkCookieHeader
(HttpURLConnection.java:330)

	at sun.plugin.net.protocol.http.HttpURLConnection.getInputStream
(HttpURLConnection.java:367)

	at sun.plugin.net.protocol.http.HttpUtils.followRedirects
(HttpUtils.java:39)

	at sun.plugin.cache.CachedJarLoader.download(CachedJarLoader.java:311)

	at sun.plugin.cache.CachedJarLoader.load(CachedJarLoader.java:131)

	at sun.plugin.cache.JarCache.get(JarCache.java:175)

	at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect
(CachedJarURLConnection.java:71)

	at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile
(CachedJarURLConnection.java:56)

	at sun.misc.URLClassPath$JarLoader.getJarFile(URLClassPath.java:498)

	at sun.misc.URLClassPath$JarLoader.<init>(URLClassPath.java:459)

	at sun.misc.URLClassPath$2.run(URLClassPath.java:255)

	at java.security.AccessController.doPrivileged(Native Method)

	at sun.misc.URLClassPath.getLoader(URLClassPath.java:244)

	at sun.misc.URLClassPath.getLoader(URLClassPath.java:221)

	at sun.misc.URLClassPath.getResource(URLClassPath.java:134)

	at java.net.URLClassLoader$1.run(URLClassLoader.java:190)

	at java.security.AccessController.doPrivileged(Native Method)

	at java.net.URLClassLoader.findClass(URLClassLoader.java:186)

	at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:132)

	at sun.plugin.security.PluginClassLoader.findClass
(PluginClassLoader.java:189)

	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

	at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:112)

	at java.lang.ClassLoader.loadClass(ClassLoader.java:262)

	at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:473)

	at sun.applet.AppletPanel.createApplet(AppletPanel.java:548)

	at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1621)

	at sun.applet.AppletPanel.runLoader(AppletPanel.java:477)

	at sun.applet.AppletPanel.run(AppletPanel.java:290)

	at java.lang.Thread.run(Thread.java:536)


This bug can be reproduced always.

---------- BEGIN SOURCE ----------
use any applet that is stored in several jars
---------- END SOURCE ----------
(Review ID: 139290) 
======================================================================

Comments
EVALUATION Is client side proxy server password-protected? If so, it could fail when authenticate against client proxy server (Microsoft ISA-server), since we don't support microsoft proprietary authentication schema. ###@###.### 2002-02-15 We don't support MS NTLM authentication schema. Once NTLM support is added, the problem will be fixed. ###@###.### 2002-05-01
15-02-2002