X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fclient%2FWebSocketEventClient.java;h=0787b04780c4d00890869514f263d9dbbaf52c32;hb=c2eb0b8ebd1c9df4923f5fb2298a4ae04237f65d;hp=aab806a46d1059b77f3ebc59a39bdcd020ca5529;hpb=b1a235695e876269172d9db401eb0a25af938a30;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java b/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java index aab806a46..0787b0478 100644 --- a/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java +++ b/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java @@ -1,12 +1,18 @@ 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 { @@ -33,8 +39,17 @@ public class WebSocketEventClient { }; + // SPNEGO + URL jaasUrl = SpnegoHttpClient.class.getResource("jaas.cfg"); + System.setProperty("java.security.auth.login.config", jaasUrl.toExternalForm()); + LoginContext lc = new LoginContext("SINGLE_USER"); + lc.login(); + String token = RemoteAuthUtils.getGssToken(lc.getSubject(), "HTTP", uri.getHost()); + HttpClient client = HttpClient.newHttpClient(); - CompletableFuture ws = client.newWebSocketBuilder().buildAsync(uri, listener); + CompletableFuture ws = client.newWebSocketBuilder() + .header(HttpHeader.AUTHORIZATION.getName(), HttpHeader.NEGOTIATE + " " + token) + .buildAsync(uri, listener); WebSocket webSocket = ws.get(); webSocket.request(Long.MAX_VALUE);