NGINX — проверка токена oauth2

Во-первых, это технология, которую я использую для установления соединения через веб-сокет:

  • Sock JS для интерфейса с протоколом STOMP
  • NGINX как веб-прокси
  • Spring как сервер сокетов с протоколом STOMP

У меня есть экземпляр NGINX, который будет проксировать запрос веб-сокета, пока эта конфигурация NGINX работает нормально, за исключением проверки токена.

location /wsapp/ {
    proxy_pass http://wsbackend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host; }

Хотите проверить и завершить токен в NGINX, но, похоже, не можете найти способ перехватить токен, который является частью заголовка stomp. Есть ли обходной путь для этого?


person DarkMakukudo    schedule 28.10.2020    source источник


Ответы (1)


В интересах всех, кто столкнется с той же проблемой, мне удалось решить проблему, не полагаясь на обмен сообщениями для проверки токена.

Вместо этого проверка токена происходит при установлении соединения через веб-сокет, и токен передается через строку запроса.

let socket = new SockJS('https://example.net/wsapp?myjwt=' + token);
stompClient = Stomp.over(socket);

А NGINX выполнит проверку с помощью директивы auth_jwt:

auth_jwt "JWT Test Realm" token=$arg_myjwt;

Ссылка: JWT-аутентификация NGINX

person DarkMakukudo    schedule 04.11.2020