我们在 Tomcat6 上启用了基本身份验证。用户在浏览器中进行身份验证,然后启动 JNLP 以在 Java Web Start 中启动应用程序。在启动时,java web start 尝试从服务器下载 jar 文件,但它没有使用已经通过浏览器身份验证的同一会话。基于论坛,我尝试使用 sid 属性在 JNLP 中传递会话 ID,并附加在 URL 中。环境受到限制,因此每个请求都需要经过身份验证,我们不能说排除对未经过身份验证的 jar 文件的请求。下面是我创建 JNLP 文件的 JSP,任何人都可以帮助我们如何继续相同的会话来下载已经通过浏览器身份验证的 jar。
<% response.setContentType("application/x-java-jnlp-file"); %>
<%= "<?xml version=\"1.0\" encoding=\"utf-8\"?>" %>
<!-- JNLP File for SimpleTableDemo -->
<%
String baseURL = request.getRequestURL().toString().replace(request.getRequestURI(), request.getContextPath());
%>
<jnlp codebase="<%=baseURL%>">
<information>
<title>Simple Table Demo Application</title>
<vendor>Try</vendor>
<description>SimpleTableDemo</description>
<description kind="short">An application that demonstrates a simple table.</description>
</information>
<resources>
<j2se version="1.6+" />
<property name="sid" value="<%=request.getSession().getId()%>" />
<property name="serviceHost" value="<%=request.getServerName()%>"/>
<property name="servicePort" value="<%=request.getServerPort()%>"/>
<jar href="AuthenticateJNLPJars.jar;JSESSIONID=<%=request.getSession().getId()%>" />
</resources>
<application-desc main-class="SimpleTableDemo" >
</application-desc>
</jnlp>