2011-11-30 21 views
2

jnlpファイルが開発されました。クライアントがブラウザからダウンロードすると正しく動作します。ここまで問題はありませんが、クライアントはjnlpが参照しているjarファイルにアクセスし、最終的にダウンロードすることもできます。Jnlp - 参照したjarファイルのダウンロードを防止します

ブラウザからパスを書き込んで、自分のjarファイルを他の人がダウンロードしたくないのですが。私はちょうどjnlpがブラウザから直接アクセスできるようにしたい。

この状況を修正するにはどうすればよいですか?

答えて

2

を参照してください。 JnlpDownloadServlet(JDKで提供されているサンプル内にあるJnlpDownloadServletを参照)は、Jarファイルに対する要求を処理し、それらに対してdiffを実行します。

<servlet> 
    <servlet-name>JnlpDownloadServlet</servlet-name> 
    <servlet-class>com.sun.javaws.servlet.JnlpDownloadServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>JnlpDownloadServlet</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

のようにweb.xmlファイルを設定した場合、/ app内のファイルのリクエストはすべてこのサーブレットを経由します。これにより、ユーザーは利用可能なファイルを見るための簡単なブラウズを行うことができなくなりますが、ファイル名を知っていれば、サーブレット経由で取得要求を作成できます。

問題がある場合は、web.xmlのセキュリティ制約の設定を使用して、このサーブレットへのアクセスにセキュリティを設定することもできます。これを追加すると、javawsランチャーは、ユーザーがファイルをダウンロードする前に有効な資格情報を提供する必要があります。私はの認証方法としてBASICを使用しました。なぜなら、javawsクライアントが他のクライアントを尊重するかどうかわからないからです。

3

「修正」はありません。 Jarsがアプリケーションを起動するJWSクライアントからアクセスできる場合は、直接フェッチでも利用できます。

0

jnlpをJSPまたはサーブレット(ここではexample参照)で動的に生成するとどうなりますか?

この場合、ファイルを取得するためのポリシー(Cookieに基づく)を実装できるフィルタを作成できます。クッキーが設定されていない場合は、jarのダウンロードを無効にすることができます。

はあなたがアクセスをブロックするための方法として提供JnlpDownloadServletがを使用することができ、次のarticle: http://lopica.sourceforge.net/faq.html#cookies

+0

これは有益なようです。方法を探している間、友人は私に方法を言った。ここでは、ダミーのWebProjectを作成し、このプロジェクトにすべてのもの(jnlpとjar)を入れ、jarファイルを直接アクセスするのを防ぐためにweb.xmlを使用するとどうなりますか?もしそうなら、本当に可能ですか?例を挙げていただけますか? – emrahsamdan

+0

これは何とか関連しています:http://stackoverflow.com/questions/5662288/apache-tomcat-file-download-only-after-session-authentication-jsp –

+0

もっと簡単な解決策は、「User-Agent JNLPでない場合はダウンロードを禁止します。フィルタの動作については、http://www.ibm.com/developerworks/java/library/j-tomcat2/を参照してください。 –

関連する問題