5

最近、JNLP 経由でアプリケーションを起動するときに問題に遭遇しました。私は今、それを に絞り込みましたjava.security.AccessControlException。これは、私のExecuterService.

modifyThreadそのため、いくつか読んだところ、サービスを正常にシャットダウンするにはアクセス許可 ( ) が必要であることがわかりました。-tag (JNLP ファイル内) を使用して要求する必要があることもわかりましたが、その<security>方法について少し混乱しています。

タグのドキュメントには次のように書かれています。

[...]all-permissions要素が指定されている場合、アプリケーションはクライアント マシンとローカル ネットワークに完全にアクセスできます。アプリケーションがフル アクセスを要求する場合、すべてのJAR ファイルに署名する必要がありますユーザーにプロンプ​​トが表示されます[ ...]

これを読むと、すべての権限を取得するか、まったく取得しないかを選択できるように思えます...これは、紛らわしい実装のように思えます。サービスをシャットダウンするのに必要なのは1つだけだからです。

また、この記事を読んで、すべてのアクセス許可を要求するべきではないと教えてくれました。ユーザーのコンピューターを開いて悪意のあるコードを実行してしまうからです。

では、特定のアクセス許可 ( modifyThread) のみが必要であり、そのため、jar に署名する必要がないことを指定する方法はありますか? それとも、「jar に署名してすべてを要求する」アプローチを使用する必要がありますか?

4

1 に答える 1

4

..「jar に署名してすべてを要求する」アプローチを使用する必要がありますか?

はい。JWS パーミッションには 3 つのレベル1があり、スレッドの変更が許可されている唯一のレベルは ですall-permissions

1) JWSのセキュリティレベル

  • サンドボックス。非常に限られた環境を提供します。プリンタやローカル ファイル システムなどへのアクセスは、JNLP API サービスを使用してのみ許可されます。これらのサービスはFile、ユーザーにプロンプ​​トを表示した後に、より制限された形式を提供します。ウィンドウバナーが付属しています。自分のサーバーとしか通信できません。
  • j2ee-application-client-permissions- これらの JNLP API サービスをプロンプトなしで (ユーザーがデジタル署名されたコードを受け入れた後に) 提供すると、ウィンドウ バナーが削除されます。
  • all-permissions- 既存のセキュリティ マネージャを置き換えることを含め、ほとんど何でも (はい、「すべてのアクセス許可」コードでさえ JWS でセキュリティ マネージャを取得します - それは非常に寛大です)。

また、 JNLP & JWSページからのリンクも追跡してください。私は個人的にそれらの要約とリンクをお勧めします。

于 2012-06-06T17:24:42.827 に答える