2

我有以下问题。在一台服务器中,我有一个文件夹 /protected/ 需要使用 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 文件不能包含代码库条目。否则,Java VM 将尝试重新下载该文件,但由于它未经过身份验证,它将获得登录页面。

但是,如果可以读取 JNLP,则资源也不可能在受保护区域内,因为 JWS 再次没有经过身份验证。

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

有任何想法吗?

4

1 回答 1

1

到目前为止,我还没有找到解决这个问题的合适方法。我做了以下,它的工作:

  • 在我的服务器上创建了一个保护区,并在其后面添加了一个 servlet
  • 我的 servlet 使用会话 ID 即时创建 JNLP 文件。
  • JNLP 文件用于从公共位置下载 JAR
  • Web 启动应用程序使用会话 ID 从受保护区域加载资源。
于 2013-04-01T15:40:05.307 回答