简体   繁体   中英

java.policy allowing connection to port 80

I have added the following to /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"; 
};

As far as I can tell this should allow me to get from that URL.

This is my code:

    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);
        }
    }

I still end up getting a 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)

Is there something else that needs to be done to allow me to send a request to port 80? I'm using Java 15.0.2 from https://hub.docker.com/_/openjdk

It was due to a security tool wrapped around the java executable, not due to any issue with Java itself.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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