2010-07-20 57 views
1

我創造一個無符號的applet到不同的主機的套接字連接和我得到java.security.AccessControlException:拒絕訪問簽名Java小程序

如果我不是「自我證書」簽署該applet或「CA cert」applet是否獲得了創建到不同主機的套接字連接的權限(與下載的主機不是同一個主機),並且如果已經通過CA認證,它會彈出安全消息嗎?

感謝

回答

4

如果你不籤的小程序,這是訪問本地資源的代碼不會以任何方式執行。

如果您使用self-cert對applet進行簽名,則最終用戶只會收到一條警告消息,要求獲得許可。不過,您仍然需要將呼叫包裝在AccessController#doPrivileged()之內。

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

如果使用$$$-cert簽名applet,enduser將不會收到警告消息。

+0

如果堆棧中沒有不可信代碼,則不需要使用'doPrivileged'。無論證書是有效的還是自簽名的,警告對話框都是相同的。 – 2010-07-20 16:13:26

+0

我想跨域套接字連接不受信任? – Adam 2010-07-20 16:30:52

0

您應該看到適當的證書對話框,除非禁用或始終接受證書。只有在用戶同意的情況下,代碼才具有完整的權限。

更好的方法是堅持只連接到相同來源的主機。