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

时间:2013-01-13 15:28:35

标签: java web-applications java-web-start saml

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

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

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

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

我的身份提供商是ZXID,我们正在使用SAML。我认为Java Web Start必须以某种方式使用与浏览器相同的SAML令牌,对吧?它是否正确?有可能吗?

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

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

所以我猜需要的是JWS VM以某种方式从浏览器获取会话ID,因此它被认为是Authenticated。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

到目前为止,我还没有找到解决这个问题的正确方法。我做了以下工作,并且有效:

  • 在我的服务器上创建了一个受保护区域,并在其后面添加了一个servlet
  • 我的servlet动态创建一个JNLP文件,其中包含会话ID。
  • JNLP文件用于从公共位置下载JAR
  • 会话ID由Web Start应用程序用于从受保护区域加载资源。