1

署名されていないアプレットを使用して別のホストへのソケット接続を作成していますが、java.security.AccessControlException:アクセスが拒否されました

このアプレットに「self-cert」または「CAcert」のいずれかで署名すると、アプレットは別のホスト(ダウンロード元のホストとは異なる)へのソケット接続を作成する権限を取得し、セキュリティメッセージがポップアップ表示されます。 CAによって認定されていますか?

ありがとう

4

2 に答える 2

4

アプレットに署名しないと、ローカルリソースにアクセスしているコードは実行されません。

自己証明書を使用してアプレットに署名すると、エンドユーザーは許可を求める警告メッセージのみを受け取ります。ただし、呼び出しを。内にラップする必要がありますAccessController#doPrivileged()

public void init() {
    AccessController.doPrivileged(new PrivilegedAction<Object> {
        @Override public Object run() {
            // Put your original init() here.
            return null;
        }
    });
}

$$$証明書を使用してアプレットに署名した場合、エンドユーザーは警告メッセージを受け取りません。

于 2010-07-20T16:09:58.713 に答える
0

無効にされていない限り、またはその証明書が常に受け入れられている場合を除き、証明書に適切なダイアログが表示されます。ユーザーが同意した場合にのみ、コードに完全な特権が与えられます。

より良いアプローチは、同一生成元のホストのみに接続することに固執することです。

于 2010-07-20T16:12:05.547 に答える