1

У нас есть Spring websocket [STOMP и JSR] на стороне сервера и клиент Jetty websocket для связи с сервером. Аутентификация отлично работает с браузером, поскольку мы аутентифицируем пользователя при входе в систему, у нас есть sockjs STOMP со стороны браузера, но нам также нужна аутентификация на клиенте Jetty websocket.Как проверить подлинность клиента websocket Jetty для весеннего websocket (JSR-356)

Как это сделать? Любой другой вариант?

+0

@Bruno, я думаю Причал клиент WebSocket не обеспечивает способ аутентификации во время соединение – Kunal

+1

Как вы аутентифицируете пользователя? Если это файл cookie, вы можете получить идентификатор сеанса, такой как JSESSONID, из файла cookie, установленного сервером, выполнив действие входа в систему с помощью HTTP-клиента Jetty и настроив его на запрос квитирования WebSocket, например. [ClientUpgradeRequest] (http://download.eclipse.org/jetty/9.2.9.v20150224/apidocs/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.html). –

+0

http://docs.spring.io/spring-framework/docs/4.1.5.RELEASE/spring-framework-reference/html/websocket.html#websocket-stomp-authentication –

ответ

0

Укажите обычную проверку подлинности в конфигурации Идент яровой

<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(); 
Смежные вопросы