どこにJavaアプレットポリシーファイルを配置するには?
質問
私は管理者として動作するネットワーク上のサーバに接続し、ロジックゲームと目的2人のユーザーで、その後、一つ一つを再生するために開始する人工知能プロジェクトに取り組んでいます。
8000そして、彼らが到着すると、クライアントにチームの値を割り当てる:は接続を作成するためには、私はちょうどローカルホスト上でリッスンしているサーバ・コードを持っています。接続後、クライアントは、管理者の管理下に自分の行動を起こすます。
問題は、私はそれが次のエラーで失敗したブラウザで動作するように私のコードを配置しようとすることです。
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)
それは私がのからのすべてのの権限が付与されて動作しませんでした後、私は、最初に私のプロジェクトフォルダ(file:///home/xxx/projects/-
)のコードベースにのみソケットのアクセス許可を与える、私自身のポリシーを作成しているにもかかわらずすべての
のコードベース。私は、ホームディレクトリに、どこで私のアプレットのコードが存在する同じディレクトリに両方の私のポリシーファイルを置いてみました。任意のヒントに感謝、感謝ます。
解決
デフォルトでは、私はそれはあなたのホームディレクトリの.java.policy
という名前のファイルを探し考えますあなたはそれが見える場所を確認するために、ファイル/lib/security/java.securityを確認することができます。 policy.url.n
という名前のキーをチェック他のヒント
このコマンドラインオプションを使用して、セキュリティポリシーファイルの場所を設定することができます。
-Djava.security.policy=policyfilepath
java
コマンドを使用して、。
それともあなたもSystem.setProperty()
の手順を使用して、このproperyを設定することができます。
場所JREがあるポリシーファイルます。
たとえば、私のポリシーファイルはC:\プログラムファイル\のJava \ jre1.6.0_01 \ libに\セキュリティ
私は強く、同一生成元ポリシーを尊重示唆しています。セキュリティへの影響は、時間の最高の状態で、必ずしも明らかではありません。また、標準の権限を持つアプレットは、より良い使いやすさを持っており、保守が容易である必要があります。
この、これはのみ動作します あなたの方法はalibraryで、あなたはあなたが安全に操作にアクセスすることをしている場合は、
、あなたは基本的に必ずあなたのブロックを呼び出しスタックの一部がアクセス計算では考慮されていません。
特権ブロック、ここで説明するようにます:
http://docs.oracle.com/ Java SE / 6 /ドキュメント/技術情報/ガイド/セキュリティ/ doprivileged.htmlする
ご挨拶 ベルント