SSO (Single Sign On) — это технология, с помощью которой пользователь, будучи аутентифицированным в клиентской системе идентификации, будет автоматически авторизован на сервисах входящих в эту систему.
Рисунок 1 - Внешний вид формы входа платформы SSO
Настройка взаимодействия SSO с Личным кабинетом:
Необходимо отредактировать конфигурационный файл /etc/eltex-wifi-cab/system.xml
Где в блоке настроек SSO указать параметры для интеграции в систему.<!-- SSO Settings --> <entry key="sso.enabled">false</entry> <entry key="sso.redirectUri">http://localhost:8080/wifi-cab/sso</entry> <entry key="sso.clientSecret"></entry> <entry key="sso.clientId"></entry> <!-- SSO Auth --> <entry key="sso.auth.server.protocol">http</entry> <entry key="sso.auth.server.address"></entry> <entry key="sso.auth.server.port">80</entry> <entry key="sso.auth.auth.path">/auth/realms/b2b/protocol/openid-connect/auth</entry> <entry key="sso.auth.logout.path">/auth/realms/b2b/protocol/openid-connect/logout</entry> <!-- SSO REST --> <entry key="sso.rest.server.protocol">http</entry> <entry key="sso.rest.server.address"></entry> <entry key="sso.rest.server.port">80</entry> <entry key="sso.rest.server.timeout.sec">10</entry> <entry key="sso.rest.protocol.version">2.0</entry> <entry key="sso.rest.username"></entry> <entry key="sso.rest.password"></entry> <entry key="sso.rest.getToken.path">/apiman-gateway/sso_b2b/getToken</entry> <entry key="sso.rest.getUserInfo.path">/apiman-gateway/sso_b2b/getUserInfo</entry> <entry key="sso.rest.addUser.path">/apiman-gateway/sso_b2b/addUser</entry> <entry key="sso.rest.updateUser.path">/apiman-gateway/sso_b2b/updateUser</entry> <entry key="sso.rest.delUser.path">/apiman-gateway/sso_b2b/delUser</entry> <entry key="sso.rest.addUserParam.path">/apiman-gateway/sso_b2b/addUserParam</entry> <entry key="sso.rest.delUserParam.path">/apiman-gateway/sso_b2b/delUserParam</entry> <entry key="sso.rest.getUserByName.path">/apiman-gateway/sso_b2b/getUserByName</entry> <entry key="sso.rest.resetPassword.path">/apiman-gateway/sso_b2b/resetPassword</entry> <entry key="sso.rest.getUserByParam.path">/apiman-gateway/sso_b2b/getUserByParam</entry>
Параметр Значение sso.enabled
включение интеграции с SSO (может принимать значения true/false) sso.redirectUri
адрес, с которого производится перенаправление на платформу SSO sso.clientSecret
секретный ключ клиента
sso.clientId
идентификатор клиента, созданный в системе SSO
sso.auth.server.protocol
протокол обращения к Auth-серверу SSO sso.auth.server.address
публичный адрес Auth-сервера SSO sso.auth.server.port
порт обращения к Auth-серверу SSO sso.rest.server.protocol
протокол обращения REST API SSO sso.rest.server.address
публичный адрес REST API SSO sso.rest.server.port
порт обращения к REST API SSO sso.rest.servertimeout.sec
время ожидания ответа от REST API SSO (в сек.) sso.rest.protocol.version
версия протокола SSO (1.0 либо 2.0) sso.rest.username
логин пользователя SSO платформы для взаимодействия с базой данных(добавления учётных записей) sso.rest.password
пароль пользователя SSO платформы для взаимодействия с базой данных(добавления учётных записей)
Настройка взаимодействия SSO с Конструктором порталов:
Необходимо отредактировать конфигурационный файл /etc/eltex-portal-constructor/application.conf
Где в блоке настроек SSO указать параметры для интеграции в систему.
sso { enabled = false version = "2.0" rest { scheme = http host = localhost port = 80 sso_api_path = /apiman-gateway/b2b_test } auth { scheme = http host = localhost port = 80 authentication_path = /auth/realms/b2b/protocol/openid-connect/auth logout_path = /auth/realms/b2b/protocol/openid-connect/logout } params { client_id = id # URL of epadmin, URL must be in double quotes (!!!) redirect_uri = "http://localhost:8080/epadmin/sso" client_secret = secret } }
Параметр | Значение |
---|---|
enabled | включение интеграции с SSO (может принимать значения true/false) |
version | версия протокола SSO (1.0 либо 2.0) |
rest | блок настроек взаимодействия с REST API SSO |
auth | блок настроек взаимодействия с Auth-сервером SSO |
scheme | протокол обращения к SSO-серверу |
port | порт обращения к SSO-серверу |
client_id | идентификатор клиента, созданный в системе SSO |
client_secret | секретный ключ клиента |
redirect_uri | адрес, с которого производится перенаправление на платформу SSO |
authentication_path | URL для аутентификации на платформе SSO |
logout_path | URL для выхода с платформы SSO |
sso_api_path | URL для работы с REST API SSO |
Синхронизация Учётных Записей ЛК и платформы SSO
При включенной интеграции с платформой SSO Учётные Записи ЛК автоматически экспортируются в базу данных платформы SSO, с предварительной проверкой возможности создания пользователя на платформе SSO и ЛК. Из автоматического экспорта исключаются Учетные Записи пользователей с нулевой и default_platform_xxx системными ролями в ЛК. Если при создании Учётной Записи в ЛК, создаваемый пользователь есть в системе SSO -вернётся ошибка 409 (Рисунок 2).
Рисунок 2 - Вывод ошибки при создании новой Учётной Записи в ЛК, логин которой уже есть в SSO.
- Перед добавлением новой учётной записи в ЛК можно выполнить проверку логина на платформе SSO. Для этого перейдите в меню "Настройки",вкладка "Системные пользователи" и введите интересующий Вас логин в поле(рисунок 3) и нажмите кнопку "Проверить логин на SSO". По результаты вы увидете код с сообщением ответа на запрос к плаформе SSO(код ответа:404 - данных о пользователе не найдено;код ответа:200 - вывод данных о пользователе в JSON-формате)
Рисунок 3 - Проверка логина на платформе SSO
- Можно выполнить экспорт и синхронизацию уже имеющихся Учетных Записей ЛК с платформой SSO. Для этого перейдите в меню "Настройки",вкладка "Системные пользователи" и нажмите на кнопку "Синхронизировать с SSO". Откроется диалог с просьбой нажать кнопку "Старт" для начала синхронизации. В ходе синхронизации в диалоговом окне будет выведена информация о том, что синхронизация начата. В конце синхронизации в окне можно увидеть ответы на запросы синхронизации о каждой Учётной Записи и общий результат с количеством синхронизированных УЗ.
Рисунок 4 - Диалоговое окно сихронизации с SSO
Привязка пользователю ЛК к существующего пользователю SSO
При включенной интеграции с платформой SSO при создании пользователя в ЛК проверяется наличие пользователя на платформе SSO, с задаваемым логином и email:
- Если пользователь с логином, создаваемым в ЛК, есть на SSO, но у него нет привязки в ЛК - то пользователь будет создан в ЛК, а на платформе SSO к пользователю с задаваемым логином будет привязан профиль в ЛК.
- Если пользователь с логином, создаваемым в ЛК, есть на SSO, но у него есть привязка в ЛК - то будет получена соответствующая ошибка.
Локальная авторизация при включенной интеграции с платформой SSO
При включенной интеграции с платформой SSO при переходе на http://<ip-сервера>:8080/wifi-cab/ или http://<ip-сервера>:8080/epadmin/ происходит автоматический редирект на страницу аутентификации на платформе SSO. При необходимости, для авторизации в Личном Кабинете и Конструкторе порталов без обращения к SSO (или пользователями, которые не заведены на платформу SSO) можно использовать http://<ip-сервера>:8080/wifi-cab/local_auth или http://<ip-сервера>:8080/epadmin/local_auth