Передача IP пользователя через HA proxy

Max

Administrator
Staff member
Если только настроить ha-proxy подменять IP адрес на адрес клиента.
Но мы такую настройку не тестировали.
 

pnzdevelop

Member
Протестируйте) это очень важная опция. Например для авторизации пользователя хочу сделать привязку по ip, а 127.0.0.1 как то не обнадёживает
 

Max

Administrator
Staff member
HA proxy форвардит HTTP, и в последствии Websocket трафик на наш сервер WCS.
Единственный способ, который мы сейчас видим - передать IP-адрес клиента, это сбросить его в какой-то дополнительный HTTP-заголовок, например
x-user-ip: 192.0.2.5
Но WCS сервер не знает об этом заголовке и не умеет его парсить.
Поэтому здесь напрашивается задача парсинга кастомного HTTP-заголовка и передача его значения на REST.
Мы добавим такую задачу в свою тракинг систему.
Если по ней будут новости, отпишем в этой ветке форума.

Вы можете также реализовать передачу IP-адреса в объекте
Code:
custom {
ip: '192.0.2.5',
hash: 'asd88dqdqwdq8w'
}
Здесь hash - это хэш, который получается функцией: function(ip,secret), где secret - это ключ, который хранится на сервере и о котором знаете только вы.
Таким образом, пользователь не сможет подменить IP-адрес в custom-объекте, потому что если он это сделает, hash не совпадет.
 

pnzdevelop

Member
x-user-ip: 192.0.2.5
Но WCS сервер не знает об этом заголовке и не умеет его парсить.
Да, именно этот заголовок пытался передать. Жду новостей в этой теме.
 

Max

Administrator
Staff member
В последней сборке сервера 2502 добавили настройку WCS_HOME/config/server.properties
Code:
ws.map_custom_headers=false
Если перевести эту настройку в true, WCS-сервер будет передавать все HTTP заголовки вида "X-" в REST объект custom {} при коннекте.
Например:
1. С браузера делаем коннект к HA Proxy
Code:
Flashphoner.createSession({urlServer:'wss://domain.com:443'});
2. HA Proxy подставляет заголовок
X-IP: 192.168.1.2
3. WCS добавляет этот заголовок в custom - объект и отправляет в REST-методе /connect
Code:
/connect
{
custom: {'X-IP':'192.168.1.2'}
}
Для обновления до последней сборки нужно выполнить
Code:
service webcallserver update
 
Top