...
Блок кода | ||||
---|---|---|---|---|
| ||||
root@ubuntu:~# apt-get install eltex-papaya |
Остановка/запуск сервиса
Действие | Команды | Ответ | ||||
---|---|---|---|---|---|---|
Проверка состояния | service eltex-papaya status systemctl status eltex-papaya.service | Сервис запущен
Cервис не запущен
| ||||
Запуск сервиса | service eltex-papaya start systemctl start eltex-papaya.service | Сервис успешно запущен
| ||||
Остановка сервиса | service eltex-papaya stop systemctl stop eltex-papaya.service | Сервис успешно остановлен
| ||||
Перезапуск сервиса | service eltex-papaya restart systemctl restart eltex-papaya.service | Сервис успешно перезапущен
|
Доступные методы API
Eltex-papaya предоставляет следующие методы:
...
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "_links" : { "healthbeans" : { "templatedhref" : false"http://100.110.1.201:9098/actuator/beans", "hreftemplated" : "http://<IP-address>:9098/actuator/health"false }, "healthconfigprops-pathprefix" : { "templated" : true, "href" : "http://<IP-address>100.110.1.201:9098/actuator/healthconfigprops/{*pathprefix}" }, "cachesenv-cachetoMatch" : { "templatedhref" : true"http://100.110.1.201:9098/actuator/env/{toMatch}", "hreftemplated" : "http://<IP-address>:9098/actuator/caches/{cache}"true }, "selfhealth-path" : { "href" : "http://<IP-address>100.110.1.201:9098/actuator/health/{*path}", "templated" : falsetrue }, "httptracecaches" : { "templated" : false, "href" : "http://<IP-address>100.110.1.201:9098/actuator/httptracecaches", }, "templated" : false "info" : { }, "env-toMatchtemplated" : {false, "href" : "http://<IP-address>100.110.1.201:9098/actuator/env/{toMatch}info", "templated" : true }, "configpropshttptrace" : { "href" : "http://<IP-address>100.110.1.201:9098/actuator/configpropshttptrace", "templated" : false }, "infoself" : { "hreftemplated" : "http://<IP-address>:9098/actuator/info"false, "templatedhref" : false"http://100.110.1.201:9098/actuator" }, "configprops-prefixenv" : { "templatedhref" : true"http://100.110.1.201:9098/actuator/env", "hreftemplated" : "http://<IP-address>:9098/actuator/configprops/{prefix}"false }, "threaddumpconfigprops" : { "hreftemplated" : "http://<IP-address>:9098/actuator/threaddump"false, "templatedhref" : false"http://100.110.1.201:9098/actuator/configprops" }, "heapdumphealth" : { "templated" : false, "href" : "http://<IP-address>100.110.1.201:9098/actuator/heapdumphealth" }, "envthreaddump" : { "href" : "http://<IP-address>100.110.1.201:9098/actuator/envthreaddump", "templated" : false }, "cachesheapdump" : { "href" : "http://<IP-address>100.110.1.201:9098/actuator/cachesheapdump", "templated" : false }, "beanscaches-cache" : { "templatedhref" : false"http://100.110.1.201:9098/actuator/caches/{cache}", "hreftemplated" : "http://<IP-address>:9098/actuator/beans"true } } } |
Конфигурация
...
Основной конфигурационный файл
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
server: port: 9098 portal: baseUrl: http://localhost<IP-address_portal>:9000/eltex_portal/ connectionTimeoutMs: 1000 totalConnections: 1 jwt: configuration: algorithm: RS256 keyLength: 2048 privateKeyFilePath: "/etc/eltex-papaya/keys/private.key" publicKeyFilePath: "/etc/eltex-papaya/keys/public.key" keyIdFilePath: "/etc/eltex-papaya/keys/keyId.txt" discovery: cacheTtlSeconds: 600 url: "https://m-c.tele2.ru/discovery<URL_Discovery>" clientSecret: "fzh5zEB8746o0Ht8<Client_Secret>" clientId: "discovery-Eltex<Client_ID>" redirectUrl: "http://localhost<URL_Redirect>" openid: configCacheTtlSeconds: 600 authCacheTtlSeconds: 600 otpAuthCacheTtlSeconds: 600 notificationUri: "http://92.125.152.58:9098/notify/<URL_Notify>" acrValue: "2" version: "mc_si_r2_v1.0" caching: # We use this if we want replication. If it's disabled we don't need any network configuration replicationEnabled: false # Enable or disable multicast clustering multicastEnabled: false # Enable or disable auto detection autoDetectionEnabled: false # The address outside of the NAT network of a Docker Container, for example # Leave this section empty and hazelcast chooses it's itself publicAddress: "" # Port of the public node port: 5702 # Do we need to propagate to further ports portAutoIncrement: false # Count of ports to propagate if portAutoIncrement is true portCount: 1 # Available methods are: # HOSTNAME - you need to specify the HOSTNAME environment variable inside your container that contains host and # can be resolved to an IP Address # IP_ADDRESS - you need to specify interfaceIp variable in this configuration or INTERFACE_IP variable in docker # environment # BIND_TO_ALL - hazelcast tries to bind itself to all known interfaces # By Default IP_ADDRESS is used in Deb package and HOSTNAME in Docker environment interfaceBindingMethod: "IP_ADDRESS" # The IP Address by which we select binding interface in hazelcast. # Works only if interfaceBindingMethods is INTERFACE_IP interfaceIp: "127.0.0.1<IP-address>" # List of the member servers of this cache cluster. You can list comma-separated IPv4, IPv6 addresses # and resolvable hosthosts with ports separated by colon. NotIf resolvableport hostsnot configured - port from configuration parameter below # will be used as default for all cluster nodes. # Not resolvable hosts will be logged in error log. servers: # List hosts, ips here [] spring: cloud: discovery: client: composite-indicator: enabled: false management: health: defaults: enabled: false trace: http: enabled: true endpoint: health: show-details: always endpoints: web: exposure: # Actuator info # Useful for inspecting deployed beans, watching metrics, watching caches info # Also we can use it to create heapdump, threaddump, shutdown application and etc. include: health, beans, info, caches, prometheus, env, threaddump, heapdump, configprops, httptrace |
- Прослушиваемый сервисом порт:
...
Блок кода | ||
---|---|---|
| ||
portal: baseUrl: http://localhost<IP-address_portal>:9000/eltex_portal/ # URL сервиса Captive Portal, на котором будет происходить аутентификация пользователей connectionTimeoutMs: 1000 # Время ожидания подключения в милисекундах totalConnections: 1 # Максимальное количество одновременных подключений |
...
Блок кода | ||
---|---|---|
| ||
discovery: url: "https://https://m-c.tele2.ru/discovery/" <URL_Discovery>" # URL Discovery-сервиса cacheTtlSeconds: 600 # Время хранения кэша в секундах clientSecret: "<secret><Client_Secret>" # Ключ подключения clientId: "<id><Client_ID>" # ID подключения redirectUrl: "http://localhost<URL_Redirect>" # URL перенапрвления |
- Парамеры подключения OpenID:
...
Блок кода | ||
---|---|---|
| ||
caching: replicationEnabled: false # Статус активации репликации multicastEnabled: false # Статус активации мультикаста autoDetectionEnabled: false # Cтатус активации автообнаружение нод publicAddress: "" # Публичный адрес текущей ноды port: 5702 # Порт доступа к ноде portAutoIncrement: false # Автоинкремент портов portCount: 1 # Максимум портов для автоинкремента; interfaceBindingMethod: "IP_ADDRESS" # Метод биндинга. Доступные методы: ## HOSTNAME — для этого режима необходимо задать переменную окружения HOSTNAME, которая может зарезолвиться в IP-адрес ## IP_ADDRESS — для этого режима необходимо задать значение переменной CACHING_INTERFACEIP ## BIND_TO_ALL — в этом режиме Hazelcast попытается использовать все доступные интерфейсы ## IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment interfaceIp: "127.0.0.1" # IP-адрес интерфейса для биндинга servers: ["172.16.0.1", "papaya-replicated-2"] # Cписок членов кластера в виде IPv4, IPv6 или hostname |
- Параметры управления:
Блок кода | ||
---|---|---|
| ||
management: trace: http: enabled: true # Cписок членов кластера в виде IPv4, IPv6 |
- Параметры управления:
Блок кода | ||
---|---|---|
| ||
management: health: defaults: enabled: false trace: http: enabled: true endpoint: health: show-details: always # Активация трассировки endpoints: web: exposure: # Actuator info # Useful for inspecting deployed beans, watching metrics, watching caches info # Also we can use it to create heapdump, threaddump, shutdown application and etc. include: health, beans, info, caches, prometheus, env, threaddump, heapdump, configprops, httptrace # Список параметров для отображения в трассировке |
Настройка логирования
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Properties> <Property name="maxSize" value="10MB"/> <Property name="maxCount" value="10"/> <Property name="logDir" value="/var/log/eltex-papaya"/> <Property name="defaultPattern" value="%d{ISO8601} [%t] %-5p %logger{1} %C{1}.%M(line:%L). %m%n"/> <Property name="gelfHost" value="udp:localhost"/> <Property name="gelfPort" value="12201"/> <Property name="gelfLevel" value="OFF"/> <Property name="filenamePrefix" value="eltex-papaya"/> </Properties> <Appenders> <RollingFile name="SPRING-INFO" fileName="${logDir}/${filenamePrefix}-spring.log" filePattern="${logDir}/spring/%d{yyyyMMdd}.%i.log"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="SERVICE" fileName="${logDir}/${filenamePrefix}.log" filePattern="${logDir}/service/%d{yyyyMMdd}.%i.log"> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <RollingFile name="HAZELCAST" fileName="${logDir}/${filenamePrefix}-hazelcast.log" filePattern="${logDir}/hazelcast/%d{yyyyMMdd}.%i.log"> <PatternLayout> <pattern>${defaultPattern}</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="${maxSize}"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"/> </RollingFile> <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="${filenamePrefix}" extractStackTrace="true" originHost="%host{fqdn}" maximumMessageSize="8192"> <Field name="thread" pattern="%t"/> <Field name="level" pattern="%level"/> <Field name="severity" pattern="%-5level"/> <Field name="logger" pattern="%logger{1}"/> <Field name="location" pattern="%C{1}.%M(line:%L)"/> </Gelf> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Gelf" level="${gelfLevel}"/> </Root> <Logger name="org.springframework" level="info"> <AppenderRef ref="SPRING-INFO"/> </Logger> <Logger name="org.eltex.softwlc.papaya" level="info"> <AppenderRef ref="SERVICE"/> </Logger> <Logger name="com.hazelcast" level="info"> <AppenderRef ref="HAZELCAST"/> </Logger> </Loggers> </ConfigurationConfiguration> |
- Максимально допустимый размер файла (при его превышении создается новый файл, а старый архивируется):
...
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
version: "3" services: eltex-papaya: ports: - "${PAPAYA_SERVER_PORT}:${PAPAYA_SERVER_PORT}" - "${CACHING_PORT}:${CACHING_PORT}" #- "${PAPAYA_DEBUG_PORT}:${PAPAYA_DEBUG_PORT}" container_name: eltex-papaya image: ${ELTEX_HUB}/eltex-papaya:${SWLC_VERSION} volumes: - ${PAPAYA_CONFIG_DIR}/keys/:${PAPAYA_CONFIG_DIR}/keys/ environment: # Порт внутри контейнера. По умолчанию 9098 - SERVER_PORT=${PAPAYA_SERVER_PORT} # Порт удаленного дебага - PAPAYA_DEBUG_PORT=${PAPAYA_DEBUG_PORT} # URL сервиса Captive Portal, на котором будет происходить аутентификация пользователей - PORTAL_BASEURL=${PORTAL_BASEURL} # Таймаут подключения к Captive Portal - PORTAL_CONNECTIONTIMEOUTMS=${PORTAL_CONNECTIONTIMEOUTMS} # Число одновременных подключений к Captive Portal - PORTAL_TOTALCONNECTIONS=${PORTAL_TOTALCONNECTIONS} # Алгоритм генерации ключей - JWT_CONFIGURATION_ALGORITHM=${JWT_CONFIGURATION_ALGORITHM} # Длина ключа в битах - JWT_CONFIGURATION_KEYLENGTH=${JWT_CONFIGURATION_KEYLENGTH} # Путь к приватному ключу - JWT_CONFIGURATION_PRIVATEKEYFILEPATH=${JWT_CONFIGURATION_PRIVATEKEYFILEPATH} # Путь к публичному ключу - JWT_CONFIGURATION_PUBLICKEYFILEPATH=${JWT_CONFIGURATION_PUBLICKEYFILEPATH} # Путь к файлу, содержащему keyId ключа - JWT_CONFIGURATION_KEYIDFILEPATH=${JWT_CONFIGURATION_KEYIDFILEPATH} # Discovery # Время жизни записи в кэше запросов Discovery - DISCOVERY_CACHETTLSECONDS=${DISCOVERY_CACHETTLSECONDS} # Адрес сервиса Discovery - DISCOVERY_URL=${DISCOVERY_URL} # Секрет для авторизации - DISCOVERY_CLIENTSECRET=${DISCOVERY_CLIENTSECRET} # Идентификатор клиента для авторизации - DISCOVERY_CLIENTID=${DISCOVERY_CLIENTID} # Зарегистрированный URL для перенаправления - DISCOVERY_REDIRECTURL=${DISCOVERY_REDIRECTURL} # Open ID # Время жизни записи в кэше конфигураций MobileID - OPENID_CONFIGCACHETTLSECONDS=${OPENID_CONFIGCACHETTLSECONDS} # Время жизни записи в кэше авторизаций MobileID - OPENID_AUTHCACHETTLSECONDS=${OPENID_AUTHCACHETTLSECONDS} # Время жизни записи в кэше авторизаций по MobileID OTP - OPENID_OTPAUTHCACHETTLSECONDS=${OPENID_OTPAUTHCACHETTLSECONDS} # Адрес для обратных уведомлений от IDGW - OPENID_NOTIFICATIONURI=${OPENID_NOTIFICATIONURI} # Список запрашиваемых LoA - OPENID_ACRVALUE=${OPENID_ACRVALUE} # Версия приложения MobileID - OPENID_VERSION=${OPENID_VERSION} # Настройки Hazelcast # Репликация - CACHING_REPLICATIONENABLED=${CACHING_REPLICATIONENABLED} # Мультикаст - CACHING_MULTICASTENABLED=${CACHING_MULTICASTENABLED} # Автообнаружение нод - CACHING_AUTODETECTIONENABLED=${CACHING_AUTODETECTIONENABLED} # Публичный адрес текущей ноды - CACHING_PUBLICADDRESS=${CACHING_PUBLICADDRESS} # Порт доступа к ноде - CACHING_PORT=${CACHING_PORT} # Автоинкремент портов - CACHING_PORTAUTOINCREMENT=${CACHING_PORTAUTOINCREMENT} # Максимум портов для автоинкремента - CACHING_PORTCOUNT=${CACHING_PORTCOUNT} # Доступные методы биндинга: # HOSTNAME - для этого режима необходимо задать переменную окружения HOSTNAME которая может зарезолвиться в IP адрес # IP_ADDRESS - для этого режима необходимо задать значение переменной CACHING_INTERFACEIP # BIND_TO_ALL - в этом режиме Hazelcast попытается использовать все доступные интерфейсы # IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment - CACHING_INTERFACEBINDINGMETHOD=${CACHING_INTERFACEBINDINGMETHOD} - CACHING_INTERFACEIP=${CACHING_INTERFACEIP} # список членов кластера в виде IPv4, IPv6 или hostname - CACHING_SERVERS=${CACHING_SERVERS} # - CACHING_SERVERS_0=${CACHING_SERVERS_0} # - CACHING_SERVERS_1=${CACHING_SERVERS_1} # Изначальный размер хипа - PAPAYA_JAVA_INIT_HEAP=${PAPAYA_JAVA_INIT_HEAP} # Максимальный размер хипа - PAPAYA_JAVA_MAX_HEAP=${PAPAYA_JAVA_MAX_HEAP} # Путь, куда нужно складывать heap-dump в случае падения приложения - PAPAYA_HEAP_DUMP_PATH=${PAPAYA_HEAP_DUMP_PATH} # Внутренний путь до конфигурации сервиса - PAPAYA_CONFIG_DIR=${PAPAYA_CONFIG_DIR} # Настройки логирования - PAPAYA_LOG_LEVEL=${PAPAYA_LOG_LEVEL} - PAPAYA_CONSOLE_LEVEL=${PAPAYA_CONSOLE_LEVEL} # Настройки Graylog - GELF_LEVEL=${GELF_LEVEL} - GELF_HOST=${GELF_HOST} - GELF_PORT=${GELF_PORT} |
...
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
# Docker-репозиторий, где находится образ eltex-papaya. # Для разработки: lab3.eltex.loc:5000 # Публичный: hub.eltex-co.ru/softwlc ELTEX_HUB=hub.eltex-co.ru/softwlc # Версия сервиса, которую нужно развернуть # На feature-ветке — вида 1.23-<название_ветки> SWLC_VERSION=1.23-<tag> # Внешний порт контейнера eltex-papaya PAPAYA_SERVER_PORT=9098 CACHING_PORT=5702 # Порт для удаленного дебага PAPAYA_DEBUG_PORT=5015 # URL сервиса Captive Portal, на котором будет происходить аутентификация пользователей PORTAL_BASEURL=http://<IP-address>address_portal>:9000/eltex_portal/ # Таймаут подключения к Captive Portal PORTAL_CONNECTIONTIMEOUTMS=1000 # Число одновременных подключений к Captive Portal PORTAL_TOTALCONNECTIONS=1 # Алгоритм генерации ключей JWT_CONFIGURATION_ALGORITHM=RS256 # Длина ключа в битах JWT_CONFIGURATION_KEYLENGTH=2048 # Путь к приватному ключу JWT_CONFIGURATION_PRIVATEKEYFILEPATH=/etc/eltex-papaya/keys/private.key # Путь к публичному ключу JWT_CONFIGURATION_PUBLICKEYFILEPATH=/etc/eltex-papaya/keys/public.key # Путь к файлу, содержащему keyId ключа JWT_CONFIGURATION_KEYIDFILEPATH=/etc/eltex-papaya/keys/keyId.txt # Discovery # Время жизни записи в кэше запросов Discovery DISCOVERY_CACHETTLSECONDS=600 # Адрес сервиса Discovery DISCOVERY_URL=https://m-c.tele2.ru/discovery<URL_Discovery> # Секрет для авторизации DISCOVERY_CLIENTSECRET=<client-secret>"<Client_Secret>" # Идентификатор клиента для авторизации DISCOVERY_CLIENTID=<client-id>"<Client_ID>" # Зарегистрированный URL для перенаправления DISCOVERY_REDIRECTURL=<Redirect"<URL_Redirect>" URL> # Open ID # Время жизни записи в кэше конфигураций MobileID OPENID_CONFIGCACHETTLSECONDS=600 # Время жизни записи в кэше авторизаций MobileID OPENID_AUTHCACHETTLSECONDS=600 # Время жизни записи в кэше авторизаций по MobileID OTP OPENID_OTPAUTHCACHETTLSECONDS=600 # Адрес для обратных уведомлений от IDGW OPENID_NOTIFICATIONURI=http://<PUBLIC_IP>:9098/notify # Список запрашиваемых LoA OPENID_ACRVALUE=2 # Версия приложения MobileID OPENID_VERSION=mc_si_r2_v1.0 # Настройки Hazelcast # Репликация CACHING_REPLICATIONENABLED=false # Мультикаст CACHING_MULTICASTENABLED=false # Автообнаружение нод CACHING_AUTODETECTIONENABLED=false # Публичный адрес текущей ноды CACHING_PUBLICADDRESS="" # Порт доступа к ноде CACHING_PORT=5702 # Автоинкремент портов CACHING_PORTAUTOINCREMENT=false # Максимум портов для автоинкремента CACHING_PORTCOUNT=1 # Доступные методы биндинга: # HOSTNAME - для этого режима необходимо задать переменную окружения HOSTNAME которая может зарезолвиться в IP адрес # IP_ADDRESS - для этого режима необходимо задать значение переменной CACHING_INTERFACEIP # BIND_TO_ALL - в этом режиме Hazelcast попытается использовать все доступные интерфейсы # IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment CACHING_INTERFACEBINDINGMETHOD=IP_ADDRESS CACHING_INTERFACEIP=127.0.0.1 # список членов кластера в виде IPv4, IPv6 или hostname CACHING_SERVERS= # Изначальный размер хипа PAPAYA_JAVA_INIT_HEAP=8m # Максимальный размер хипа PAPAYA_JAVA_MAX_HEAP=64m # Путь, куда нужно складывать heap-dump в случае падения приложения PAPAYA_HEAP_DUMP_PATH=/var/log/eltex-papaya # Внутренний путь до конфигурации сервиса PAPAYA_CONFIG_DIR=/etc/eltex-papaya # Настройки логирования PAPAYA_LOG_LEVEL=INFO PAPAYA_CONSOLE_LEVEL=INFO # Настройки Graylog # Вместо <graylog_server_ip> нужно указать настоящий адрес сервера Graylog или localhost GELF_LEVEL=OFF GELF_HOST=udp:localhost GELF_PORT=12201 |
Описание переменных окружения
...
- CACHING_REPLICATIONENABLED — статус активации репликация;
- CACHING_MULTICASTENABLED — статус активации мультикаста;
- CACHING_AUTODETECTIONENABLED — статус активации автообнаружение нод;
- CACHING_PUBLICADDRESS — публичный адрес текущей ноды;
- CACHING_PORT — порт доступа к ноде;
- CACHING_PORTAUTOINCREMENT — автоинкремент портов;
- CACHING_PORTCOUNT — максимум портов для автоинкремента;
- CACHING_INTERFACEBINDINGMETHOD — Метод биндинга. Доступные методы:
- HOSTNAME — для этого режима необходимо задать переменную окружения HOSTNAME, которая может зарезолвиться в IP-адрес
- IP_ADDRESS — для этого режима необходимо задать значение переменной CACHING_INTERFACEIP
- BIND_TO_ALL — в этом режиме Hazelcast попытается использовать все доступные интерфейсы
IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment
- CACHING_INTERFACEIP — IP-адрес интерфейса для биндинга:
- CACHING_SERVERS — список членов второй член кластера в виде IPv4, IPv6 или hostname, если в кластере используются 2 ноды:
- CACHING_SERVERS_0 - IP-адрес текущей ноды, если в кластере используется более 2 нод:
- CACHING_SERVERS_<N> - IP-адрес N ноды, если в кластере используется более 2 нод.
Параметры инициализации сервиса
...
Блок кода | ||||
---|---|---|---|---|
| ||||
root@ubuntu:~# docker-compose up -d |
Настройка SoftWLC
Настройка интеграции | ||||||||||||||||||
Конструкор порталов | Поключение к сервису eltex-papaya |
2. Проверить значения параметров модуля mobileID
| ||||||||||||||||
Включение нового типа авторизации | Проверить, что новая настройка сохранилавь в БД:
2. По ID портала найти ID его группы конфигураций:
3. Проверить, что авторизация по Mobile ID включена:
| |||||||||||||||||
Проверка авторизации через MobileID | ||||||||||||||||||
Портал | Авторизация с телефонным номером Теле2 с поддержкой Mobile ID. |
2. Перейти на страницу Портала. 3. Выбрать авторизацию по номеру телефона. 4. Ввести телефонный номер Теле2 и нажать кнопку "MobileID". 5. Должно появиться системное уведомление о подключении к сети. 6. Нажать "ок" - должен появиться доступ в сеть. 7. Нажать "отмена" либо ничего не нажимать - редирект на выбор способа авторизации. | ||||||||||||||||
Авторизация с телефонным номером Теле2 без поддержки Mobile ID. | Старые сим-карты Теле2 могут не поддерживать Mobile D, для такого случая предусмотрен сценарий, при котором пользователю Mobile ID присылает смс-сообщение с кодом.
2. Перейти на страницу Портала. 3. Выбрать авторизацию по номеру телефона. 4. Ввести телефонный номер Теле2 и нажать кнопку "MobileID". 5. Придет SMS-сообщение с кодом для авторизации. 6. Если код авторизации не пришел, его можно запросить повторно. 7. В случае превышения числа попыток ввода кода, будет редирект на страницу выбора способа авторизации. | |||||||||||||||||
Авторизация с телефонным номером других операторов |
2. Перейти на страницу Портала. 3. Выбрать авторизацию по номеру телефона. 4. Ввести телефонный номер любого другого и нажать кнопку "MobileID". 5. На портале должна появиться ошибка и предложение использовать другой способ авторизации. |
Расшифровка логов портала | |
---|---|
Неуспешная авторизация, papaya не отвечает MobailID (подробнее в логах papaya). | ERROR org.eltex.portal.service.PapayaServiceImpl PapayaServiceImpl.postMobileIdAuthentication(line:56). Papaya not answered success to MobileID auth request. Details: Code: 500. Message: Internal Server Error |
Успешная авторизация. | DEBUG org.eltex.portal.controller.MobileIdController MobileIdController.setMobileIdStatus(line:51). MobileID user with id 44189e91-45bc-430a-ad01-66baccc4233d successfully authenticated |
Успешная авторизация по SMS-коду. | DEBUG org.eltex.portal.controller.MobileIdController MobileIdController.getSmsCodeStatus(line:121). MobileID user with MAC a4:45:19:0b:8c:2e successfully authenticated |
Начало OTP-сессии для устройства с mac-адресом. | DEBUG org.eltex.portal.controller.MobileIdController MobileIdController.getAuthenticationStatus(line:206). For user 00:00:00:ff:dd:dd started an MobileID OTP Session. Showing code enter form |
Неуспешная авторизация, подробнее в логах papaya. | ERROR org.eltex.portal.controller.MobileIdController MobileIdController.setMobileIdStatus(line:60). Authentication failed for authReqId: 3fcea8a7-b9a6-4118-9e01-5de02795c7cd. Status: FAILED |
Сессия пользователя не найдена для проверки SMS-кода - сессия истекла на стороне MobileID. | ERROR org.eltex.portal.service.PapayaServiceImpl PapayaServiceImpl.checkSmsStatus(line:154). Cannot check SMS status for device: null |
Пользователь не подтвердил свою личность, статус аутентификации - не подтверждён (не нажал "ОК", не ввёл пин-код). | DEBUG org.eltex.portal.controller.MobileIdController MobileIdController.getAuthenticationStatus(line:223). User a4:45:19:0b:8c:2e is not authenticated due some unknown error of MobileID. Redirecting to index and showing error |
Нельзя начать OTP-сессию для пользователя. Он либо давно ушёл с портала, попал на OTP очень поздно, либо запросил новую сессию в MobileID. | ERROR org.eltex.portal.service.PapayaServiceImpl PapayaServiceImpl.requireSmsCodeFromUser(line:124). Can't start OTP session for authReqId a37c6178-1502-486c-b0a4-012e94145314. User MAC not found. |
Не удалось проставить статус FAILED, так как пользователь уже ушёл с портала, либо получил новую сессию в MobileID. | ERROR org.eltex.portal.service.PapayaServiceImpl PapayaServiceImpl.authenticationFail(line:107). Can't fail MobileID user authentication. Mac not found by 18d0c694-9bdf-42ad-851e-a30cd4d430a0. Current status is: FAILED |
Расшифровка логов papaya | |
---|---|
Пользователь отклонил системное уведомление о входе на портал, либо оператор не смог его прислать. | OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:145). User not authorized because of: authorization_error:user denies the request or authentication fails |
Слишком долго ждали нажатия "ОК", либо вовсе его не нажали. Неуспешная авторизация. | OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:145). User not authorized because of: authorization_error:Subscriber consent waiting time expired |
Получено уведомление о статусе авторизации пользователя MobileID. Внутри ID сессии и номер телефона, если пользователь находится в кэше. | OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:143). Received notify with request id 3485f838-9f7c-4349-9f54-a35d6f8ab49f. Phone 79585150889 |
Успешно отправили запрос на авторизацию пользователя с номером телефона в MobileID. Ждём уведомления от MobileID. | OpenIdAuthorizationService.processMobileIdAuth$suspendImpl(line:198). Auth success for 79585150889. Waiting for auth notification |
Получили от портала запрос на авторизацию с представленным номером телефона. Замечание: нельзя одновременно авторизоваться с одним номером телефона на двух устройствах. MobileID держит только одну сессию за время, так что на одном из устройств будет неуспех. | OpenIdAuthorizationService.processMobileIdAuth$suspendImpl(line:184). Received auth request for phone 79585150889 |
Ответ на запрос проверки SMS-кода по схеме Пользователь -> Портал -> Папайа -> MobileID. В данном случае введённый SMS-код верный. | OpenIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:241). SMS status is correct for c8f4e1a4-0a71-4eaf-bae5-74491c2076cd : 79930086782 |
Получен SMS-код от портала на проверку в MobileID. | OpenIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:222). Received sms code from portal service. Phone 79930086782 |
Статус проверки SMS - введённый код неверный. | penIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:241). SMS status is incorrect for c8f4e1a4-0a71-4eaf-bae5-74491c2076cd : 79930086782 |
Код из SMS неверный. Оставшееся количество попыток: 2. Это сообщение, которое приходит в папаю из MobileID. | penIdAuthorizationService$performOtpAuthRequest$2.invokeSuspend(line:128). Error while sending auth request to MobileID platform 5135:FORBIDDEN: remaining attempts: 2 |
Сообщение от MobileID - превышено число попыток проверки SMS-кода. | OpenIdAuthorizationService$performOtpAuthRequest$2.invokeSuspend(line:128). Error while sending auth request to MobileID platform 5136:LIMIT_REACHED |
MobileID открыл сессию OTP для пользователя с представленным номером. Ожидаем ввода пользователя на портале, после этого проверяем SMS-код. | OpenIdAuthorizationService.processOtpNotifyRequest$suspendImpl(line:162). Received OTP notify with request id c8f4e1a4-0a71-4eaf-bae5-74491c2076cd. Phone 79930086782 |
Не можем отправить запрос на авторизацию пользователя с таким номером, так как его оператор не подключен к MobileID, либо не подключен в профиле С-П на Discovery. | OpenIdDiscoveryService$sendDiscoveryRequest$2.invokeSuspend(line:61). Can't perform discovery with specified phone 79293810070. Details: 404 NOT_FOUND "Not_Found_Entity:There is no organization with the specified MSISDN" |
Превысили число проверок SMS-кода на MobileID. OTP-сессия завершилась неуспешно. | OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:145). User not authorized because of: authorization_error:OTP authentication failed |
Исчерпали число попыток для проверки СМС. OTP-сессия после этого закрывается и получаем ошибку авторизации. | OpenIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:241). SMS status is limit_reached for 185de01e-6637-46d3-92ab-6b4905e13a71 : 79930086782 |
Настройка кластера
...
Настройка кластера при использовании deb-пакетов
Настройка выполняется в файле /etc/eltex-papaya/config/application.yml в разделе "caching".
Алгоритм минимальной настройки:
- Включить репликацию:
Блок кода | ||
---|---|---|
| ||
replicationEnabled: true |
2. Указать тип привязки:
Блок кода | ||
---|---|---|
| ||
interfaceBindingMethod: "IP_ADDRESS" |
3. Указать IP-адрес интерфейса привязки:
Блок кода | ||
---|---|---|
| ||
interfaceIp: "100.110.1.201" |
4. Перечислить участников кластера:
Блок кода | ||
---|---|---|
| ||
servers:
[100.110.1.201:5703, 100.110.2.50:5702] |
Параметры необходимо настроить на всех нодах и перезапустить сервис на всех серверах-участниках.
Настройка кластера при использовании двух docker-контейнеров
Настройка параметров выполняется в файле переменных окружения .env.
Алгоритм минимальной настройки:
- Включить репликацию:
Блок кода | ||
---|---|---|
| ||
CACHING_REPLICATIONENABLED=true |
2. Указать публичный адрес сервера:
Блок кода | ||
---|---|---|
| ||
CACHING_PUBLICADDRESS=100.110.1.201 |
3. Указать тип привязки:
Блок кода | ||
---|---|---|
| ||
CACHING_INTERFACEBINDINGMETHOD=HOSTNAME |
4. Указать IP-адрес второй ноды
Блок кода | ||
---|---|---|
| ||
CACHING_SERVERS=100.110.2.50 |
Параметры необходимо настроить на всех нодах и перезапустить контейнер на всех серверах-участниках.
Настройка кластера при использовании более двух docker-контейнеров
Настройка параметров выполняется в файле переменных окружения .env.
Алгоритм минимальной настройки:
- Включить репликацию:
Блок кода | ||
---|---|---|
| ||
CACHING_REPLICATIONENABLED=true |
2. Указать публичный адрес сервера:
Блок кода | ||
---|---|---|
| ||
CACHING_PUBLICADDRESS=100.110.1.201 |
3. Указать тип привязки:
Блок кода | ||
---|---|---|
| ||
CACHING_INTERFACEBINDINGMETHOD=HOSTNAME |
4. Указать IP-адрес текущей ноды
Блок кода | ||
---|---|---|
| ||
CACHING_SERVERS_0=100.110.1.201 |
5. Указать IP-адрес второй ноды
Блок кода | ||
---|---|---|
| ||
CACHING_SERVERS_1=100.110.2.50 |
6. Указать IP-адрес третей ноды
Блок кода | ||
---|---|---|
| ||
CACHING_SERVERS_2=100.110.2.56 |
7. Добавить в docker-compose.yml новые переменные и удалить старую:
Блок кода | ||
---|---|---|
| ||
# - CACHING_SERVERS=${CACHING_SERVERS}
- CACHING_SERVERS_0=${CACHING_SERVERS_0}
- CACHING_SERVERS_1=${CACHING_SERVERS_1}
- CACHING_SERVERS_2=${CACHING_SERVERS_2} |
Параметры необходимо настроить на всех нодах и перезапустить контейнер на всех серверах-участниках.
Проверка состояния кластера
Проверить состояние кластера можно командой:
Блок кода | ||||
---|---|---|---|---|
| ||||
root@ubuntu:~/papaya# curl -X GET http://100.110.1.201:9098/actuator/health/hazelcast | json_pp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 415 100 415 0 0 25937 0 --:--:-- --:--:-- --:--:-- 25937
{
"details" : {
"members" : [
{
"uuid" : "15e43aae-fe31-4804-bd57-b8a46bcf1bf1",
"localMember" : false,
"address" : "[100.110.2.50]:5702",
"liteMember" : false,
"memberVersion" : "4.2.5"
},
{
"localMember" : true,
"uuid" : "739d7ea4-d6e4-46c3-a86c-080ec2d0fc69",
"address" : "[100.110.1.201]:5702",
"memberVersion" : "4.2.5",
"liteMember" : false
}
],
"uuid" : "739d7ea4-d6e4-46c3-a86c-080ec2d0fc69",
"state" : "ACTIVE",
"name" : "competent_hermann"
},
"status" : "UP"
} |
Команда является единой для всех видов запуска.