java - 无法在 protected 站点上启动 Java Web Start

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

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

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

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

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

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

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

但是,如果可以读取 JNLP,资源也不能在保护区内,因为 JWS 再次未通过身份验证。

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

有什么想法吗?

最佳答案

到目前为止,我还没有找到解决这个问题的合适方法。我执行了以下操作,并且有效:

  • 在我的服务器上创建了一个保护区,并在它后面添加了一个 servlet
  • 我的 servlet 使用 session ID 动态创建 JNLP 文件。
  • JNLP 文件用于从公共(public)位置下载 JAR
  • Web 启动应用程序使用 session ID 从保护区加载资源。

关于java - 无法在 protected 站点上启动 Java Web Start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304909/

相关文章:

java - 在根节点之前和 org.w3c.dom 的序言之后插入/附加注释时出现问题

Java 模式和匹配器随机中断

java - Spring JPA @Converter - 如何使用它自己的 id 作为盐来加密实体?

java - Hash(#) 在查询字符串中的行为是什么

php - 创建字体预览

python - 存储站点/的恒定数据

java - 在服务器上实现 java webstart 的正确方法是什么?

java - 关于 bufferedModels 和键盘输入的 JGoodies Binding bug 问题

java - 我必须在 Webstart 应用程序中显式调用 System.exit() 吗?

java - 包 javax.jnlp 在模块 java.jnlp 中声明,它不在模块图中