Вопрос проверяет знание механизмов аутентификации и авторизации при установке WebSocket-соединения, что важно для безопасности реального времени.
WebSocket-соединение начинается с HTTP-рукопожатия (handshake), что даёт возможность использовать стандартные HTTP-механизмы аутентификации. После установки соединения протокол не поддерживает заголовки, поэтому авторизацию нужно передавать либо на этапе handshake, либо в первом сообщении.
ws://example.com/socket?token=abc123. Просто, но токен может попасть в логи сервера.Authorization: Bearer <token>. Безопаснее, но не все WebSocket-клиенты поддерживают кастомные заголовки.const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (socket, req) => {
// Извлекаем токен из query-параметров
const url = new URL(req.url, 'http://localhost');
const token = url.searchParams.get('token');
if (!token || !validateToken(token)) {
socket.close(1008, 'Unauthorized');
return;
}
console.log('Authenticated client connected');
});Выбор способа зависит от требований безопасности и инфраструктуры. Для большинства приложений достаточно передавать JWT в query-параметрах или заголовках при handshake. Если нужна дополнительная защита от перехвата, используйте WSS (WebSocket Secure) и короткоживущие токены.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
Node.js
Networks
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию