0

尽管有非常相似的帖子,但没有得到答复。

我的带有 WebSocket 的 JavaFX 应用程序将

  1. 发送用户名、密码到服务器
  2. 保留会话以让用户执行诸如个人数据管理之类的操作。

从中学习

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 {
}

感谢帮助。

4

1 回答 1

2

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

于 2014-12-16T09:27:32.600 回答