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

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

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

« Предыдущий Версия 8 Следующий »

Общая схема взаимодействия

Установка

Полноценного этапа установки у сервиса нет, в основном старт сервиса заключается в исполнении скрипта или поднятии контейнеров.

Подробнее про возможные концепции старта сервиса можно посмотреть здесь.

Рекомендуемые минимальные требования: 4G RAM, 4 CPU, и 50Gb HDD.

Docker compose

Рассмотрим работу через docker compose.

 docker-compose.yml
version: "3.9"
services:
keycloak-postgres:
image: library/postgres:${KC_POSTGRES_IMAGE_TAG:-15}
container_name: ${POSTGRES_CONTAINER_NAME:-postgres}
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
healthcheck:
test: pg_isready -d postgres
interval: 10s
timeout: 5s
retries: 3
start_period: 5s
ports:
- ${KC_POSTGRES_PORT_MAPPING:-5435}:5432
volumes:
- postgres:/var/lib/postgresql/data
deploy:
resources:
limits:
memory: 256M

keycloak:
image: quay.io/keycloak/keycloak:20.0.5
container_name: keycloak
restart: unless-stopped
command:
- start --auto-build --db postgres --hostname-strict-https false
--hostname-strict false --http-enabled true --import-realm
--spi-login-protocol-openid-connect-suppress-logout-confirmation-screen=true
--spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true
--spi-user-profile-legacy-user-profile-read-only-attributes *_RES_ACCESS_MODE
environment:
KC_DB_URL: jdbc:postgresql://keycloak-postgres:5432/postgres
KC_DB_USERNAME: postgres
KC_DB_PASSWORD: postgres
KC_DB_SCHEMA: public
KC_FEATURES: preview
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
ports:
- 8282:8080
depends_on:
keycloak-postgres:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://0.0.0.0:8080/realms/master"]
start_period: 10s
interval: 30s
retries: 3
timeout: 5s

volumes:
postgres:

Для корректного запуска рекомендуется установить compose плагин по инструкции

КлючПрименениеВозможные значения
--auto-buildсобирает наш экземпляр со всеми зависимостями и кастомизациями-
--dbуказывает, какую БД мы будем использовать, чтобы выбрать соответствующий драйверmariadb (была в тестах 10 версия), mssql (была в тестах 2016 версия),
mysql (была в тестах 8 версия), oracle (была в тестах 12с версия),
postgres (была в тестах 10 версия)
--hostname-strict-httpsразрешаем/запрещаем фронту и бэку keycloak общаться по HTTPfalse/true
--hostname-strictвкл/выкл динамического имени хоста из заголовков запросовfalse/true
--http-enabledразрешаем взаимодействие по httpfalse/true
--import-realmвключаем импортирование realms из файлов конфигураций-
--spi-user-profile-legacy-user-profile-read-only-attributes"--spi-user-profile-legacy-user-profile-read-only-attributes *_RES_ACCESS_MODE" опция означает, что все пользовательские атрибуты с постфиксом _RES_ACCESS_MODE доступны для редактирования только администратору realmПеречисление атрибутов

--spi-login-protocol-openid-connect-suppress-logout-confirmation-screen

Выключает страницу Keycloak с подтверждением выхода(logout). В docker-compose.yml по умолчанию true.true, false

--spi-login-protocol-openid-connect-legacy-logout-redirect-uri

Включает возможность делать logout из Keycloak по старому механизму с использованием redirect_uri параметра. В docker-compose.yml по умолчанию true.true, false

Посмотреть более полную конфигурацию можно здесь 

запуск keycloak
docker compose up -d


После старта сервиса можно перейти в web для его конфигурации http://{serverIp}:8282 , данные для входа указаны в конфигурации docker-compose.yml KEYCLOAK_ADMIN и KEYCLOAK_ADMIN_PASSWORD.


 Переход в консоль администратора

Входим в Administration Console 

Настройка

Официальная инструкция

Первоначальная

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

Согласно документации keycloak "master" realm мы используем только для создание других realms. В свою очередь созданные нами realms из мастера мы будем конфигурировать в будущем и интегрировать с приложениями. 

 Для наглядности обратим внимание на схему

realm's definition

A realm manages a set of users, credentials, roles, and groups. A user belongs to and logs into a realm. Realms are isolated from one another and can only manage and authenticate the users that they control.

Таким образом мы можем создавать разные области, в которых будет собственная настройка для авторизации и аутентификации.

 Создаем новый realm


В секцию "Realm name" внесем "softwlc" и нажмем на кнопку создания.


После создания вы автоматически окажетесь в новом realm, дальнейшие настройки мы продолжаем в нем.

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

Сущность client - нужна нам для связи keycloak с конкретным приложением.
Создадим клиент для взаимодействия с wifi-cab в качестве общего примера:

 Создаем новый client

Step 1:


Step 2:


Step 3:


Step 4 (set extra settings):


На этом этапе у разных клиентов, которых необходимо будет создавать в будущем, будет отличаться лишь название.
Если потребуется создать для приложения клиент со специфическими настройками, его имя будет гиперссылкой.

Для корректной работы нужно создать следующие клиенты:

  • wifi-cab - для работы с личным кабинетом.
  • portal-constructor - для работы с порталом.

  • nbi - для правильного взаимодействия с back-сервисом.
  • ems - для работы с системой управления.


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

Сущность mapper - нужна нам для определения keycloak какой атрибут пользователя передать в приложение.
Каждое приложение использует свои mappers, поэтому иногда процедуру требуется сделать несколько раз в зависимости от приложения.
Создадим mapper для взаимодействия с wifi-cab в качестве общего примера:

 Создание mapper

Для примера создается атрибут роли. Все остальные атрибуты создают по-аналогии.
Если есть исключения - это будет отдельно выделено.


Step 1:

Step 2:


При создании mapper для атрибута Eltex-Domain обязательно нужно включить "Multivalued"

Чтобы настроить нужные mappers следует обратиться к таблице атрибутов в документации

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

Сущность group - нужна нам для применения к пользователям общих политик, например атрибутов.
Создадим группу для взаимодействия с wifi-cab в качестве общего примера:

 Создание групп

Step 1:

Step 2:

Step 3 (добавление атрибутов):

Step 4 (место для добавления пользователей):

Атрибуты для приложений могут различаться, поэтому при создании групп берите информацию согласно таблице атрибутов.

Таблица атрибутов, используемых SoftWLC


Название ПрименениеОкончательно утвержден?
Eltex-User-RoleПередача роли пользователя
для ЛК/КП/NBI

Да.

Обязательный
для: ЛК/КП/NBI.

Eltex-DomainПередача домена пользователя
для ЛК/КП/NBI
Да.
Обязательный
для: ЛК/КП/NBI.
User-NameПередача имени пользователя
для ЛК/КП/NBI/EMS
Да.
Обязательный для
Для: ЛК/NBI
Используется для:
ЛК/КП/NBI/EMS.
Eltex-EMS-RoleИмя роли в emsобязательный аттрибут для EMS
Eltex-EMS-ResendTrapНастройка профайла пользователя:
Пересылать аварии на Email
необязательный аттрибут
Eltex-EMS-SendLogsНастройка профайла пользователя:
Пересылать логи на Email
необязательный аттрибут
Eltex-EMS-SendOntProblemsНастройка профайла пользователя:
Пересылать проблемы ONT на Email
необязательный аттрибут
Eltex-EMS-IpListНастройка профайла пользователя:
IP адреса для режима 'multiuser'
необязательный аттрибут
Eltex-User-Timezone

Отвечает за таймзону пользователя. Участвует в планировщике отчетов и отображении времени.

При настройке для пользователя должен иметь строковый формат вида Asia/Krasnoyarsk

Да.

обязательный атрибут для ЛК/NBI

необязателен, но желателен для КП

Возможные проблемы при настройке

Авторизация в keycloak проходит, а в EMS нет (Ошибка - пользователя не существует).

Встречалась при первоначальной настройке.

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

Необходимо пересоздать маппер Eltex-EMS-Role

HTTPS required

Что бы не было проблемы "HTTPS required" надо в реалме указывать в настройке "Require SSL" None. По умолчанию стоит "External requests".


  • Нет меток