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

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Следующий »

Описание



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

Eltex-doors формирует токен JWT на основе переданного POST-запроса содержащий логин, пароль, а также  метаданные.

JWT(JSON Web Token) -  JSON объект, определен в RFC 7519

Сгенерированные токены хранятся в БД eltex-doors, таблица auth_token.  По истечению, заданного в конфигурационном файле, времени(token.expire.timeout), выполняется очистка устаревших токенов из БД.

Параметры "срок действия токена{iat}" и "время создания токена{exp}" указаны в payload токена и можно узнать выполнив декодирование токена.

С версии 1.15 появилась возможность валидировать токены без дополнительного обращения к doors.  При установке или обновлении генерируются открый и закрытый ключ, которые по умолчанию размещаются в каталоге  /etc/eltex-doors/keys/.

Для того чтобы к приватному ключу имели доступ только доверенные сервисы, ключам назначаются права 440 и принадлежат группе eltex:

-r--r----- 1 root eltex 1704 Sep 19 10:44 private.pem
-r--r----- 1 root eltex  451 Sep 19 10:44 public.pem

private.pem - ключ необходимый для подписи JWT токенов

public.pem - ключ необходимый сервисам для валидации JWT токенов

Если по какой-либо причине необходимо пересоздать ключи, то можно запусить скрипт, который находится в каталоге /usr/share/eltex-doors/gen_keys.sh

После генерации новых ключей, необходимо ключ public.pem  заново передать сервисам


Доступные методы API: /api/signin/

Пример передаваемых параметров в POST запросе

{
    "username": "user", 
    "password": "password", 
    "metadata": {
        "nasIp": "100.112.0.1",
        "sessionId": "5692549928996308667",
        "vrf": "1", 
        "clientMac": "FC-45-96-5F-50-AC" 
    }
}
  • В случае успеха, сервис ответит:
{
    "status": "OK",
    "accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiYXV0aCI6WyJST0xFX0FETUlOIl0sImlhdCI6MTU1OTcwOTQ2OCwiZXhwIjoxNTU5NzgxNDY4LCJuYXNJcCI6IjEwMC4xMTIuMC4xIiwic2Vzc2lvbklkIjoiNTY5MjU0OTkyODk5NjMwODY2NyIsInZyZiI6IjEiLCJjbGllbnRNYWMiOiJGQy00NS05Ni01Ri01MC1BQyJ9.VQ1NKCcG445eSMz7jOoTGt7PC1HVhTkFxxwWWxdVO3Y"
}

где, status - статус ответа
accessToken - сгенерированный токен

  • В случае ошибки, сервис ответит:
{"status":"FAIL","error":"Invalid username or password"}

где, status - статус ответа
error - описание ошибки

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

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

## Mysql datasource properties
spring.datasource.url=jdbc:mysql://<<ip_address>>:3306/eltex_doors?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=eltexdoors			Логин 
spring.datasource.password=eltexpassword		Пароль

spring.flyway.url=jdbc:mysql://localhost:3306/eltex_doors?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.flyway.user=eltexdoors					Логин
spring.flyway.password=eltexpassword			Пароль

## Eureka settings and starting server port
server.port=9097								Порт, который слушает сервис

## Custom application properties
## Token expiration timeout
# Use time format HH:mm:ss
auth.cron.session.timeout=*/60 * * * * *		Период проверки жизни токена
auth.token.expire.timeout=20:00:00 				Время жизни токена

# Login and password from basic account
auth.username=user  						    Логин, для подключения к eltex-doors
auth.password=password 							Пароль, для подключения к eltex-doors

# Auth keys paths
auth.private.key=/etc/eltex-doors/keys/private.pem   Приватный ключ, с помощью которого подписывается JWT токен
auth.public.key=/etc/eltex-doors/keys/public.pem	 Открытый ключ, для валидации JWT

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

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

# AP Monitoring service

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

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


  • Нет меток