尽管post非常相似,但尚无人问津。
我的带WebSocket的JavaFX应用
学习
Oracle WebSocket, Tyrus 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 {
}
感谢您的帮助。
答案 0 :(得分:2)
不,没有必要使用Tyrus作为服务器实现。 在服务器端,您应该以与在servlet容器中保护servlet或jsp的方式相同的方式保护WebSocket,这在容器与容器之间可能略有不同(将用户映射到角色)。 看看authentication example 请注意,此示例显示了如何使用BASIC身份验证方案进行经过身份验证的WebSocket请求握手,但您的客户端代码已明确禁用它,因此您可能希望使用DIGEST方案。