无法在受保护的站点上启动Java Web start

无法在受保护的站点上启动Java Web start,java,web-applications,java-web-start,saml,Java,Web Applications,Java Web Start,Saml,我有以下问题。在一台服务器中,我有一个文件夹/protected/,需要使用SAML令牌进行身份验证 当我尝试访问此文件夹中的资源时,我首先会被重定向到登录页面,登录后我可以访问该资源 现在,我在/protected/文件夹中添加了一个.jnlp文件,其中包含所需的所有资源。当我尝试访问.jnlp文件时,我得到了预期的登录页面。登录JavaWebStart后,初始化并尝试下载资源 但是,Smart Start立即失败,抱怨它无法解析.jnlp文件。当我查看调试控制台时,我看到Java下载了登录页

我有以下问题。在一台服务器中,我有一个文件夹/protected/,需要使用SAML令牌进行身份验证

当我尝试访问此文件夹中的资源时,我首先会被重定向到登录页面,登录后我可以访问该资源

现在,我在/protected/文件夹中添加了一个.jnlp文件,其中包含所需的所有资源。当我尝试访问.jnlp文件时,我得到了预期的登录页面。登录JavaWebStart后,初始化并尝试下载资源

但是,Smart Start立即失败,抱怨它无法解析.jnlp文件。当我查看调试控制台时,我看到Java下载了登录页面,而不是jnlp文件。因此,Java Web Start应用程序似乎不共享浏览器的凭据,因此需要重新登录

我的身份提供者是ZXID,我们正在使用SAML。我假设JavaWebStart必须以某种方式使用与浏览器相同的SAML令牌,对吗?这是正确的吗?可能吗

到目前为止,在我的调查中,当浏览器发现一个.jnlp文件时,它会立即启动Java,Java应用程序会尝试下载jnlp,从而产生这个问题。我确实发现JNLP文件不能包含代码基条目。否则,JavaVM将尝试重新下载该文件,但由于该文件未经过身份验证,因此将获得登录页面

但是,如果可以读取JNLP,则资源也不能位于受保护区域中,因为JWS同样没有经过身份验证

因此,我想需要的是JWS-VM以某种方式从浏览器获取会话id,因此它被认为是经过身份验证的


有什么想法吗?

到目前为止,我还没有找到解决这个问题的正确方法。我做了以下几件事,它成功了:

  • 在我的服务器上创建了一个受保护的区域,并在其后面添加了一个servlet
  • 我的servlet动态创建一个JNLP文件,带有会话id
  • JNLP文件用于从公共位置下载JAR
  • web start应用程序使用会话id从受保护区域加载资源

暂定:可能使用JWS帮助的密钥库(web搜索)。否则,您可能需要一个不受保护的加载程序(JNLP/applet/JS),该加载程序执行自己的URLConnection来启动原始JNLP下载。对我来说太神奇了。也许一个链接URL被重写为“xyz.JNLP?JSESSION_ID=…”?