eclipse-ee4j / eclipse-ee4j/tyrus
When java security policy is used, Tyrus requires getProxySelector permission even if no Proxy is set
- Dominant language
- Java
- Stars
- 128
- Forks
- 49
- PR merge metrics
- No merged PRs in 30d
Description
1\. Enable java security policy
2\. Send a request using Tyrus
3\. The request fails with the error below.
The error would indicate that is used, however no proxy is used. It occurs because in JDKClientContainer (line 412) a proxy selector is obtained regardless whether a proxy is needed or not.
final ProxySelector proxySelector = ProxySelector.getDefault();
```
javax.websocket.DeploymentException: Handshake error.
at org.glassfish.tyrus.client.ClientManager$3$1.run(ClientManager.java:674)
at org.glassfish.tyrus.client.ClientManager$3.run(ClientManager.java:712)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.glassfish.tyrus.client.ClientManager$SameThreadExecutorService.execute(ClientManager.java:866)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:511)
at org.glassfish.tyrus.client.ClientManager.connectToServer(ClientManager.java:373)
at com.hp.oo.connector.client.websocket.tyrus.TyrusWebSocketClientNetConnector.lambda$connect$0(TyrusWebSocketClientNetConnector.java:146)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.security.AccessControlException: access denied ("java.net.NetPermission" "getProxySelector")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.net.ProxySelector.getDefault(ProxySelector.java:94)
at org.glassfish.tyrus.container.jdk.client.JdkClientContainer.processProxy(JdkClientContainer.java:411)
at org.glassfish.tyrus.container.jdk.client.JdkClientContainer.access$100(JdkClientContainer.java:80)
at org.glassfish.tyrus.container.jdk.client.JdkClientContainer$1.call(JdkClientContainer.java:139)
at org.glassfish.tyrus.container.jdk.client.JdkClientContainer$1.call(JdkClientContainer.java:126)
at org.glassfish.tyrus.container.jdk.client.ClientFilter.processRead(ClientFilter.java:205)
at org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:134)
at org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:136)
at org.glassfish.tyrus.container.jdk.client.Filter.onRead(Filter.java:136)
at org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:299)
at org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:283)
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
at sun.nio.ch.Invoker$2.run(Invoker.java:218)
at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
... 3 more
```
What's even more curious about this error is that it is thrown when a response is received. Additionally, even if the permission is added, the problem still persists.
#### Environment
JVM with security policy enabled
#### Affected Versions
[1.12]
Contributor guide
Assessment
This issue has not been assessed yet.