我有一个具有 REST 端点和 WebSocket 端点的微服务。
它使用 Spring 连接 Grizzly 和 Tyrus,并使用 JAX-RS 过滤器和 ServerEndpointConfig.Configurator 通过 SSO 添加身份验证。我已使用 SSLContextConfigurator 和 SSLEngineConfigurator 以及(当前)自签名证书将 SSL 添加到 REST 端点。
我没有看到在 Tyrus 1.14 中对 org.glassfish.tyrus.server.Server
执行相同操作的方法。
事实上,代码硬连接了协议(protocol)名称,这让我想知道这是否可能:
LOGGER.info("WebSocket 注册的应用程序:URL 都以 ws://"+ this.hostName + ":"+ this.getPort());
有个类似的问题here但它需要将 WAR 文件部署到完整的 Glassfish 实例。我想以编程方式执行此操作。
最佳答案
使用 https://stackoverflow.com/a/27239122/17641 中的建议解决了
listener = new NetworkListener("灰熊", "0.0.0.0", port);
listener.setSecure(true);
listener.setSSLEngineConfig(new SSLEngineConfigurator(getSslContextConfigurator()).setClientMode(false).setNeedClientAuth(false));
其中 getSslContextConfigurator
使用 keystore byte[] 和密码构造一个 org.glassfish.grizzly.ssl.SSLContextConfigurator
。
关于ssl - 如何以编程方式为 Tyrus WebSocket @ServerEndpoint 启用 WSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849572/