繁体   English   中英

java.policy 允许连接到端口 80

[英]java.policy allowing connection to port 80

我已将以下内容添加到 /home/user/.java.policy

// https://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.html
grant {
    permission java.net.SocketPermission "169.254.170.2:80", "connect"; 
};

据我所知,这应该允许我从 URL 中获得。

这是我的代码:

    URL url = new URL("http://169.254.170.2/v2/credentials/uuid");

    try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
        for (String line; (line = reader.readLine()) != null;) {
            logger.error(line);
        }
    }

我仍然最终得到一个java.net.BindException: Permission denied from the call to url.openStream:

    2021-06-02T17:12:52.010+10:00   java.net.BindException: Permission denied
    2021-06-02T17:12:52.011+10:00   at java.base/sun.nio.ch.Net.connect0(Native Method)
    2021-06-02T17:12:52.011+10:00   at java.base/sun.nio.ch.Net.connect(Net.java:574)
    2021-06-02T17:12:52.011+10:00   at java.base/sun.nio.ch.Net.connect(Net.java:563)
    2021-06-02T17:12:52.011+10:00   at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
    2021-06-02T17:12:52.011+10:00   at java.base/java.net.Socket.connect(Socket.java:648)
    2021-06-02T17:12:52.012+10:00   at java.base/java.net.Socket.connect(Socket.java:597)
    2021-06-02T17:12:52.012+10:00   at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
    2021-06-02T17:12:52.012+10:00   at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
    2021-06-02T17:12:52.012+10:00   at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
    2021-06-02T17:12:52.012+10:00   at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    2021-06-02T17:12:52.012+10:00   at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
    2021-06-02T17:12:52.013+10:00   at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
    2021-06-02T17:12:52.013+10:00   at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1261)
    2021-06-02T17:12:52.013+10:00   at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1194)
    2021-06-02T17:12:52.013+10:00   at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1082)
    2021-06-02T17:12:52.013+10:00   at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1016)
    2021-06-02T17:12:52.013+10:00   at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1600)
    2021-06-02T17:12:52.014+10:00   at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1528)
    2021-06-02T17:12:52.014+10:00   at java.base/java.net.URL.openStream(URL.java:1167)

是否需要做其他事情才能让我向端口 80 发送请求? 我正在使用来自https://hub.docker.com/_/openjdk的 Java 15.0.2

这是由于围绕 java 可执行文件的安全工具,而不是由于 Java 本身的任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM