package org.argeo.cms.client;
import java.net.URI;
+import java.net.URL;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.nio.ByteBuffer;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
+import javax.security.auth.login.LoginContext;
+
+import org.argeo.cms.auth.RemoteAuthUtils;
+import org.argeo.util.http.HttpHeader;
+
/** Tests connectivity to the web socket server. */
public class WebSocketEventClient {
};
- HttpClient client = HttpClient.newHttpClient();
- CompletableFuture<WebSocket> ws = client.newWebSocketBuilder().buildAsync(uri, listener);
+ // SPNEGO
+ URL jaasUrl = SpnegoHttpClient.class.getResource("jaas-client-ipa.cfg");
+ System.setProperty("java.security.auth.login.config", jaasUrl.toExternalForm());
+ LoginContext lc = new LoginContext(SpnegoHttpClient.CLIENT_LOGIN_CONTEXT);
+ lc.login();
+ String token = RemoteAuthUtils.createGssToken(lc.getSubject(), "HTTP", uri.getHost());
+
+ HttpClient client = SpnegoHttpClient.openHttpClient(lc.getSubject());
+ CompletableFuture<WebSocket> ws = client.newWebSocketBuilder()
+ .header(HttpHeader.AUTHORIZATION.getHeaderName(), HttpHeader.NEGOTIATE + " " + token)
+ .buildAsync(uri, listener);
+
WebSocket webSocket = ws.get();
webSocket.request(Long.MAX_VALUE);