Applet加载身份验证

时间:2011-08-09 11:27:32

标签: java authentication applet

我在IIS 7.5上运行了一个带有集成Windows身份验证的网站。在/Content文件夹(具有匿名访问权限)中有一个小程序 - MyApplet.jar。使用此applet时,Java显示“需要身份验证”弹出窗口(即使我选中“记住”复选框,此弹出窗口也不记得我的密码。)

有没有办法删除此窗口?

这是加载applet之前的Java控制台:

network: Cache entry not found [url: http://192.168.10.136/Web/Examination.mvc/Details/PatientEHR/META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration, version: null]
network: Connecting http://192.168.10.136/Web/Examination.mvc/Details/PatientEHR/META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration with proxy=DIRECT
network: Connecting http://192.168.10.136:80/ with proxy=DIRECT
network: Connecting http://192.168.10.136/Web/Examination.mvc/Details/PatientEHR/META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration with cookie "JCP-store=HDImageStore; JCP-key=Inf_WOPass"
network: Firewall authentication: site=/192.168.10.136:80, protocol=http, prompt=, scheme=ntlm

2 个答案:

答案 0 :(得分:2)

我看起来你的Applet正在做一些XML解析。 如果是这样,那么Java正在寻找一个XML解析器(使用getClass()。getResource(...)),并且作为applet的路径,它将向您的服务器执行HTTP请求。

要防止它,您可能希望使用

在applet的init方法中定义XML解析器
 Class.forName("com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
 System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");

从Java6u10开始,您还可以选择使用

从类路径(而不是Applet)中删除Applet的路径
<APPLET ...>
    <PARAM name="codebase_lookup" value="false">
</APPLET>

安东尼

答案 1 :(得分:0)

从我有限的经验和研究来看,这更多地与客户端java桥而不是服务器端有关。 您可以尝试在客户端计算机上禁用下一代插件,看它是否有帮助。

Windows:控制面板&gt; Java&gt;高级标签&gt; Java插件&gt; (取消选中)启用下一代......

如果这不起作用,或者修改客户端设置是不可行的,作为一种解决方法,您可以从身份验证中排除applet。 applet可以调用javascript与浏览器执行的服务器通信,从而避免了可怕的java身份验证对话框。 只要您的业务逻辑在服务器上进行适当的检查和身份验证(他们应该),就不应该发布安全风险。