How can I programmatically enable WSS for a Tyrus

2019-08-03 17:49发布

I have a microservice that has a REST endpoint and a WebSocket endpoint.

It Spring-wires Grizzly and Tyrus, and adds in authentication via SSO using a JAX-RS filter and a ServerEndpointConfig.Configurator. I've added in SSL to the REST endpoint using SSLContextConfigurator and SSLEngineConfigurator and a (currently) self-signed certificate.

I don't see a way to do the same for org.glassfish.tyrus.server.Server in Tyrus 1.14.

In fact, the code hardwires the protocol name, which makes me wonder if this is even possible:

LOGGER.info("WebSocket Registered apps: URLs all start with ws://" + this.hostName + ":" + this.getPort());

There's a similar question here but it requires deploying a WAR file to a full-on Glassfish instance. I want to do this programmatically.

1条回答
老娘就宠你
2楼-- · 2019-08-03 18:33

Solved using the suggestion at https://stackoverflow.com/a/27239122/17641

listener = new NetworkListener("grizzly", "0.0.0.0", port); listener.setSecure(true); listener.setSSLEngineConfig(new SSLEngineConfigurator(getSslContextConfigurator()).setClientMode(false).setNeedClientAuth(false));

Where getSslContextConfigurator constructs a org.glassfish.grizzly.ssl.SSLContextConfigurator with a keystore byte[] and password.

查看更多
登录 后发表回答