java - 如何通过 jtwitter(twitter API)从 java applet 避免 java.security.AccessControlException

标签 java security applet twitter

我正在编写一个简单的小程序(我的第一个)来从 Twitter 帐户检索最新状态。当从 eclipse 中启动的 javaw.exe 运行时,这工作正常。但是,当从浏览器运行时,出现错误:

java.security.AccessControlException: 访问被拒绝 (java.net.SocketPermission twitter.com:80 connect, resolve)

关于如何避免这种情况有什么建议吗?

电话:

private void updateStatus() {
    try {
        Twitter client = new Twitter("user", "pw");
        Status status = client.getStatus();
        addItem(status.toString());
    }
    catch (Throwable t) {
        addItem(t.getMessage());
    }
}

客户端连接成功。引发异常的是 getStatus() 调用。我注意到 eclipse 将“-Djava.security.policy=java.policy.applet”添加到 javaw.exe,不确定这是否与它在 eclipse 中而不是在浏览器中工作的原因有任何关系。令人沮丧的是,我尝试使用与 eclipse 成功使用相同的 CL 参数和 PATH 直接运行相同的 javaw.exe 命令。但是,当我直接运行它时,javaw.exe 会立即退出。 jtwitter是 Twitter API 上的一个简单包装器。

最佳答案

浏览器小程序在安全权限较低的沙箱中运行。某些操作是不允许的,例如某些 GUI 操作(以防止小程序在后台 secret 运行键盘记录器)。显然,您尝试执行的操作也是不允许的。

要解决这个问题,您必须签署您的小程序。允许签名的小程序在正常安全权限下运行。为此,您必须创建安全证书并使用 jarsigner 签署您的小程序。 .

无需购买昂贵的证书,至少如果这是一个小型个人项目则不需要。自签名证书就可以了(唯一的麻烦是浏览器会弹出一条消息,说“无法确认证书”或类似的东西)。

另请参阅:Signed applet tutorial

关于java - 如何通过 jtwitter(twitter API)从 java applet 避免 java.security.AccessControlException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147837/

相关文章:

java - 攻击者可以将 sql 或 javascript 注入(inject) java POJO 中吗?

java - 没有安全警告的 OpenGL Java Applet

java - Java Applet 中的音频无法播放

java - “appletviewer”不被识别为内部或外部命令、可操作程序或批处理文件

php - 在 HTTP WordPress 站点中加载外部 HTTPS 脚本

java - Struts2 排除模式不起作用

java - 为什么 JavaFX 包含重复的颜色常量?

java - sphinx4 jar 的安全异常

javascript - 为什么在 JS 中写入剪贴板被认为是安全漏洞?

java - hibernate 所需的 C3P0 设置是什么?