Проверить authToken

Получил веб-сокет - см. AuthToken в Cookie, в Java Spring, как вы проверяете этот authToken? Я понимаю, что этот authToken передается от уровня http к веб-сокету, поэтому я пытаюсь проверить, что веб-сокет открывается нашим приложением, а не каким-либо другим источником.

Headers for Websocket:  
GET ws://localhost:9999/somePath/websocket HTTP/1.1  
Host: localhost:9999  
Connection: Upgrade  
Pragma: no-cache  
Cache-Control: no-cache  
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36  
Upgrade: websocket  
Origin: http://localhost  
Sec-WebSocket-Version: 13  
Accept-Encoding: gzip, deflate, br  
Accept-Language: en-US,en;q=0.9  
Cookie: authToken=elFKMk5TckR0ZUNvdnZySUJxc2ZMdz09OklEZENrRFRySkp0U0ltVFdKU1RIZVE9PQ  
Sec-WebSocket-Key: e//VDAjHSRjE810tCbIEyw==  
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits  
Sec-WebSocket-Protocol: v10.stomp, v11.stomp, v12.stomp  

Я хотел бы проверить этот authToken в HttpHandshakeInterceptor.beforeHandshake

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer
registry.addEndpoint(stompEndPoint).addInterceptors(new HttpHandshakeInterceptor()).setAllowedOrigins("*").withSockJS();

public class HttpHandshakeInterceptor implements HandshakeInterceptor
Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception {

    if (request instanceof ServletServerHttpRequest) {
        ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
        HttpSession session = servletRequest.getServletRequest().getSession();
        attributes.put("sessionId", session.getId());
        // validate token logic

    }
    return true;
}

Это зависит от того, в какой службе вы выполняете аутентификацию. Эта служба сообщит вам, действителен ли токен.

Ondra Žižka 14.11.2018 18:24

Его весенняя безопасность - я бы подумал, что будет что-то вроде SecurityManger.isValidToken (authToken). В моем случае Websocket открывается для другого сервера (расположение beforeHandshake в приведенном выше коде), поэтому мне нужно проверить authToken обратно на сервер, на котором происходит все вход в систему - вернуться на этот сервер легко, но что делать призыв к аутентификации сбил меня с толку.

user3842212 14.11.2018 20:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
39
0

Другие вопросы по теме