Описание
Микросервис предназначенный для деаутентификации сессии и удаления mac адреса пользователя. Eltex-disconnect взаимодействует с сервисом PCRF, для непосредственной отправки команды на удаление сессии пользователя и сервисом аунтентификации Doors, для валидации входящего JWT токена.
Доступные методы 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 отправляет полученный токен на сервис eltex-doors, для проверки того, что данные действительно отправлены авторизованным источником. Eltex-doors проверяет токен и в зависимости от того, валиден или нет, отвечает.
Следующий этап, это декодирование токена, от куда извлекается 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 время ожидания ответа } doors { host = localhost адрес сервиса Doors port = 9097 порт, который слушает Doors path = /api путь, по которому обращаться к Doors timeout = 200 время ожидания ответа connectionTotal = 100 максимальное количество соединений с Doors }
Файл настройки логирования /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