Tyrus是否需要实施Java WebSocket身份验证?

时间:2014-12-15 07:38:12

标签: tyrus

尽管post非常相似,但尚无人问津。

我的带WebSocket的JavaFX应用

  1. 将用户ID,密码发送到服务器
  2. 让会话让用户做个人数据管理。
  3. 学习

    Oracle WebSocketTyrus 8.14客户端HTTP身份验证

    我有:

    @ClientEndPoint
    public class loginEndPoint {
        final ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build();
    
        public static void main(String [] args) {
            AuthConfig authConfig = AuthConfig.Builder.create().disableBasicAuth().build();
            Credentials credentials = new Credentials("ws_user", "password");
            client.getProperties().put(ClientProperties.AUTH_CONFIG, authConfig);
            client.getProperties().put(ClientProperties.CREDENTIALS, credentials);
    
            client.connectToServer(new Endpoint() {
    
                @Override
                public void onOpen(Session session, EndpointConfig config) {
                    try {
                        session.addMessageHandler((MessageHandler.Whole<String>) (String message) -> {
                            System.out.println("Received message: "+message);
                            messageLatch.countDown();
                        });
                        //let user do some data management
                    } catch (IOException e) {
                        System.out.println("Connect Fail.");
                    }
                }
            }, cec, new URI("ws://localhost/myApp/login"));
        }
    }
    

    这些代码是否可以进行身份​​验证?我在哪里可以在@ServerEndPoint上进行服务器端身份验证?

    @ServerEndpoint
    public class loginServerEndPoint {
    }
    

    感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

不,没有必要使用Tyrus作为服务器实现。 在服务器端,您应该以与在servlet容器中保护servlet或jsp的方式相同的方式保护WebSocket,这在容器与容器之间可能略有不同(将用户映射到角色)。 看看authentication example 请注意,此示例显示了如何使用BASIC身份验证方案进行经过身份验证的WebSocket请求握手,但您的客户端代码已明确禁用它,因此您可能希望使用DIGEST方案。