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

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

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

« Предыдущий Версия 9 Текущий »

Настройка будет состоять из следующих шагов:

Подготовка к настройке.

Инструкция предназначена для настройки доступа к сервису Keycloak по https. Предполагается, что сервис Keycloak уже настроен в рамках данной инструкции и установлен на одном сервере с контроллером SoftWLC. Так же предполагается, что уже подготовлены и получены необходимые для работы https сертификаты, обычно это набор из файлов: cert.pem, chain.pem, fullchain.pem, privkey.pem, и доменное имя для работы с сервисом. В данной инструкции используется конфигурация сервиса не исключающая возможность работы через http, а только добавляющая возможность взаимодействия через https.

Размещение сертификатов на сервере и изменение сценария docker-compose для запуска сервиса Keycloak 

Ранее, для организации работы сервиса Keycloak, в рамках данной инструкции уже была произведена установка сервиса docker и создан сценарий docker-compose.yml по пути "/opt/keycloak/". Сервис "докеризирован" и это обязательные шаги. Разместите полученные сертификаты в папке  "/opt/keycloak/cert/".

Измените сценарий  "/opt/keycloak/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 true
       --https-certificate-file=/cert/cert.pem --https-certificate-key-file=/cert/privkey.pem
        --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
      - 8283:8443
    volumes:
            - ./cert:/cert
    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:

Запустите команду "docker compose up -d" чтобы перезапустить приложение docker-compose и контейнер, содержащий сервис Keycloak, с новыми параметрами.

Проверьте работу контейнера командой "sudo docker compose ps"

Добавление сертификатов  в конфигурацию Java на сервере SoftWLC

На данном шаге необходимо добавить сертификаты в конфигурацию Java на сервер SoftWLC и рабочие ПК с которых осуществляется доступ к сервису через https. 

На сервере SoftWLC перейдите в каталог "/opt/keycloak/cert/", затем выполните следующую команду:


Внимание: Замените араметр alias в соответсвии с доменным имени использованном при генерации сертификата. Так же может не совпадать путь до конфигурации Java, он зависит от версии Java и способа ее установки.

sudo keytool -importcert -file cert.pem -alias example.ru -keystore /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -storepass changeit

Настройка сервисов

На этом шаге необходимо внести изменения в конфигурацию некоторых сервисов, взаимодействующих с Keycloak: 

Внимание: Замените адрес example.ru в соответсвии с доменным имени использованном при генерации сертификата.


1) Сервис "Личный кабинет", конфигурационный файл "/etc/eltex-wifi-cab/system.xml"

<!-- SSO Auth -->
<entry key="sso.auth.server.protocol">https</entry>
<entry key="sso.auth.server.address">example.ru</entry>
<entry key="sso.auth.server.port">8283</entry>
 
<!-- SSO REST -->
<entry key="sso.rest.server.protocol">https</entry>
<entry key="sso.rest.server.address">example.ru</entry>
<entry key="sso.rest.server.port">8283</entry>

После внесения изменений перезапустите сервис командой "sudo service eltex-wifi-cab restart"

2) Сервис "Конструктор порталов", конфигурационный файл "/etc/eltex-portal-constructor/application.conf"

rest {
        scheme = https
        host = example.ru
        port = 8283
        sso_api_path = /realms/softwlc/protocol/openid-connect
    }
    auth {
        scheme = https
        host = example.ru
        port = 8283
        authentication_path = /realms/softwlc/protocol/openid-connect/auth
        logout_path = /realms/softwlc/protocol/openid-connect/logout
    }

После внесения изменений перезапустите сервис командой "sudo service eltex-portal-constructor restart"

3) Сервис "EMS", конфигурационный файл "/usr/lib/eltex-ems/conf/system-config.txt"

sso.keycloak.auth-server-url=https://example.ru:8283

После внесения изменений перезапустите сервис командой "sudo service eltex-ems restart"


4) Сервис "eltex-radius-nbi", конфигурационный файл "/etc/eltex-radius-nbi/radius_nbi_config.txt"

sso.rest.server.protocol=https
sso.rest.server.address=example.ru
sso.rest.server.port=8283

После внесения изменений перезапустите сервис командой "sudo systemctl restart tomcat8.service"



Решение проблем

Если при попытке входа вы снова попадаете на страницу авторизации, проверьте лог модуля eltex-radius-nbi , например командой  "sudo tail -fn 100 /var/log/eltex-axis/radius-nbi/nbi_error.log" (выдает 100 строк лога eltex-radius-nbi и продолжает обновлять вывод в реальном времени). Если вы видете следующую ошибку:

2023-04-12T18:02:56,008 [http-nio-8081-exec-4] ERROR Kernel Northbound.handle(line:246). Failed. commander GetAuthRoleCmd; request [AUTH_ROLE: admin]
org.eltex.radius.nbi.exception.EltexException: HTTP request is failed, reason: 'Could not generate ECDH keypair'

Необходимо обновить версию Java и сгенерировать ключи для модуля eltex-radius-nbi, для этого выполните следующие действия (обратите внимание - версия tomcat может отличаться, в примере tomcat8):

1) Установите Java версии 11 командой:

sudo apt install openjdk-11-jdk

2) Пропишите для сервиса tomcat работающего в составе SoftWLC новую версию Java в файле  "/etc/default/tomcat8":

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

3) Перезапустите сервис tomcat работающий в составе SoftWLC командой:

sudo systemctl restart tomcat8.service
  • Нет меток