Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Описание

Микросервис предназначенный для деаутентификации сессии и удаления mac адреса пользователя.  Eltex-disconnect взаимодействует с сервисом PCRF, для непосредственной отправки команды на удаление сессии пользователя.

Для валидации JWT токена на основе публичного ключа, необходимо указать расположение ключа, а также ключ public.pem должен принадлежать группе eltex и иметь права 440.  Ключ генерирует сервис doors.

-r--r----- 1 root eltex  451 Sep 19 14:24 public.pem


При изменении ключа необходимо перезапустить сервис disconnect

systemctl restart eltex-disconnect-service.service



Доступные методы API: disconnect

  • В случае успеха сервис Eltex-disconnect ответит
{
    "success" : true
}
  • При ошибке ответ будет следующим:
{
    "success" : false, 
    "fail" : "описание возникшей ошибки" 
}

Описание работы

Сервис Disconnect ожидает  на порту 9096 GET - запрос http://{{Ip_address}}:9096/disconnect?token={{token}}

Пример запроса:

http://192.168.49.110:9096/disconnect?token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiYXV0aCI6WyJST0xFX0FETUlOIl0sImlhdCI6MTU1OTI3OTU4MCwiZXhwIjoxNTU5MzUxNTgwLCJuYXNJcCI6IjEwMC4xMTIuMC4xIiwic2Vzc2lvbklkIjoiNTY5MjU0OTkyODk5NjMwNzk2NCIsInZyZiI6IjEiLCJjbGllbnRNYWMiOiJGQy00NS05Ni01Ri01MC1BQyJ9.fWhOkgFo_rLd2mB9_70HotPH9LlGh7SuT1-qDQvv77U

После получения GET запроса от внешнего сайта,  сервис eltex-disconnect выполняет валидацию jwt токена на основе публичного ключа для проверки того, что данные действительно отправлены авторизованным источником.

Следующий этап, это декодирование токена, от куда извлекается payload(метаданные) сессии пользователя которого необходимо деаунтентифицировать.

Пример декодированного токена:

{
  "sub": "user",
  "auth": [
    "ROLE_ADMIN"
  ],
  "iat": 1559279580,
  "exp": 1559351580,
  "nasIp": "100.112.0.1",
  "sessionId": "5692549928996307964",
  "vrf": "1",
  "clientMac": "FC-45-96-5F-50-AC"
}

Описание полей payload токена

sub - пользователь
iat - время создания токена
exp - время жизни токена
nasIp - nas устройства 
sessionId - уникальная сессия пользователя
vrf - Virtual Routing and Forwarding
clientMac - mac адрес пользователя

И происходит отправка get запроса disconnect на API PCRF, в котором передаются необходимый набор параметров: VRF, Mac, sessionId, nasIp

Пример запроса:

GET http://127.0.0.1:7070/account/disconnect?session=5692549928996307974&nas_ip=100.112.0.1&vrf=1&single=false&mac=FC-45-96-5F-50-AC&remove_mac=true

PCRF выполняет необходимые действия: деаунтентификация и удаление mac адреса.


Конфигурация

Конфигурационный файл сервиса располагается по адресу /etc/eltex-disconnect-service/application.conf

pcrf {
  host = localhost			адрес сервиса PCRF
  port = 7070				порт, который слушает PCRF
  timeout = 100				время ожидания ответа
}

validation { 
  public_key = /etc/eltex-doors/keys/public.pem   путь до публичного ключа


Файл настройки логирования /etc/eltex-disconnect-service/log4j2.xml

Файл настройки инициализации сервиса /etc/default/eltex-disconnect-service

PORT=9096						Порт, который слушает сервис

# Initial size of Java heap
JAVA_INIT_HEAP=4m               Количество ОЗУ выделяемой при инициализации
# Maximum size of Java heap
JAVA_MAX_HEAP=32m				Количество ОЗУ выделяемой при работе 

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-disconnect-service







  • Нет меток