1

サーバー側には Spring Websock [STOMP および JSR] があり、サーバーと通信するための Jetty Websocket クライアントがあります。ログイン時にユーザーを認証するため、ブラウザーからの認証は正常に機能します。ブラウザー側には sockjs STOMP がありますが、Jetty websocket クライアントでも認証が必要です。

どうやってするか?他のオプションはありますか?

4

1 に答える 1

0

spring auth設定でBasic認証を指定する

<security:http auto-config="true" pattern="/websocket" use-expressions="true" entry-point-ref="ajaxAwareAuthenticationEntryPoint" disable-url-rewriting="false">
    <security:intercept-url pattern="/**" access="isAuthenticated()" />
    <security:http-basic/>
</security:http>

Jetty Websocket クライアントの SSL 構成とユーザー認証

URI serverURI = new URI("wss://domain:port/websocket");
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource("resources/domain.jks");
SslContextFactory sslContextFactory = new SslContextFactory();  
Resource keyStoreResource = Resource.newResource(url);
sslContextFactory.setKeyStoreResource(keyStoreResource);
sslContextFactory.setKeyStorePassword("Keystore Password");
sslContextFactory.setKeyManagerPassword("Keystore Password");   
WebSocketClient webSocketClient = new WebSocketClient(sslContextFactory);
ClientUpgradeRequest request = new ClientUpgradeRequest();
request.setSubProtocols("xsCrossfire");
String basicAuthHeader = HttpBasicAuthHeader.generateBasicAuthHeader("username", "password");
request.setHeader("Authorization", "Basic " + basicAuthHeader);
webSocketClient.start();
于 2015-03-26T08:53:34.840 に答える