2

ブラウザ経由で保護された JNLP を取得するセットアップがあり、JNLP は認証 Cookie をプロパティとして保存します。次に、jnlp ファイルを使用して javaws を実行します。jnlp は保護されたリソースを必要とするため、リソースをダウンロードするときに認証 Cookie を使用できるように、認証 Cookie を javaws プロセスに渡す必要があります。認証 Cookie を javaws プロセスに渡すにはどうすればよいですか?

javaws と JNLP で使用できるすべてのパラメーターを確認しましたが、これを行う方法がわかりませんでした。

これは可能ですか?

4

2 に答える 2

2

私は解決策を見つけたと思います。Java Web Start は、Internet Explorer と同じ Cookie ストアを使用します。JavaWebStart アプリケーションによって IE 永続 Cookie がどのように収集されるかについては、ここのコメントを参照してください。

これを機能させるために、次のように開発しました。

  1. JNLP と jar は保護されています
  2. IE 経由で JNLP にアクセスします。これにより、ログインして認証 Cookie を取得するログイン ページにリダイレクトされます。
  3. Web サーバーには、認証 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 を収集するため、問題なくリソースにアクセスできます。

注: 認証がパラメーターとして渡される認証セッション トークンをサポートしている場合は、jnlp "jar" タグを拡張して AUTHSESSION 値を含めることもできます。

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

私たちの場合はそうではなく、認証セッションを Cookie として提供する必要があります。

于 2015-02-05T13:23:47.960 に答える