gpt4 book ai didi

java - 将 cookie 从 JNLP 传递到 JAVAWS 以下载 protected 资源

转载 作者:行者123 更新时间:2023-11-30 08:18:54 24 4
gpt4 key购买 nike

我有一个设置,我通过浏览器获取 protected JNLP,JNLP 将身份验证 cookie 保存为一个属性。然后使用 jnlp 文件运行 javaws。 jnlp 需要 protected 资源,所以我需要将身份验证 cookie 传递给 javaws 进程,以便它在下载资源时可以使用它...如何将身份验证 cookie 传递给 javaws 进程?

我已经检查了 javaws 和 JNLP 可用的所有参数,但我无法找到如何做到这一点。

这可能吗?

最佳答案

我想我找到了解决方案。 Java Web Start 使用与 Internet Explorer 相同的 cookie 存储 - 请参阅 here 中的评论查看 JavaWebStart 应用程序如何收集 IE 持久性 cookie。

为了让它发挥作用,我开发了以下内容:

  1. JNLP 和 jars 受到保护
  2. 通过 IE 访问 JNLP - 这会将您重定向到登录页面,您可以在其中登录并获取身份验证 cookie
  3. 在您的 Web 服务器中有一个 servlet 可以拦截身份验证 cookie,使其持久化并将其添加到响应中

    public class CookieServlet extends org.springframework.web.servlet.mvc.AbstractController {
    ...
    protected ModelAndView handleRequestInternal(final HttpServletRequest req,
    final HttpServletResponse resp) throws Exception {
    ....
    Cookie[] cookies = req.getCookies();
    String session = null;
    if (cookies != null) {
    for (Cookie cookie : cookies) {
    if (cookie.getName().equals("AUTHSESSION")) {
    session = cookie.getValue();
    break;
    }
    }
    }


    if(null!=session) {
    Cookie cookie = new Cookie("AUTHSESSION", session);
    cookie.setMaxAge(<specify cookie age>);
    resp.addCookie(cookie);
    }
    ...
    }
  4. 现在通过 cmd.exe 启动您的 jnlp - 您可以毫无问题地访问资源,因为它从 IE cookie 存储中获取 cookie

注意:如果您的身份验证支持将身份验证 session token 作为参数传递,那么您还可以扩展 jnlp“jar”标签以包含 AUTHSESSION 值,即

<jar href="your_jar.jar?AUTHSESSION=<session value>"/>

对于我们来说,情况并非如此,必须以 cookie 的形式提供身份验证 session 。

关于java - 将 cookie 从 JNLP 传递到 JAVAWS 以下载 protected 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com