Инструкция по настройке SSO-аутентификации (Stroma, SWA)
Назначение документа
В документе описана настройка SSO-аутентификации по протоколу OpenID Connect (OIDC) в Мессенджере и Почте VK WorkSpace при помощи сервиса Stroma в составе Мессенджера. Данная функциональность доступна для версии Почты и Мессенджера 25.2.1 и выше.
Чтобы настроить SSO-аутентификацию в Мессенджере, выполните шаги 1-4. Если в инсталляции есть Почта VK WorkSpace и вы хотите настроить для нее сквозную авторизацию в приложении VK WorkSpace, выполните также шаги 5-6.
Примечание
При выполнении шагов 5-6, аутентификация в Почту будет также выполняться с помощью технологии SSO.
Документ предназначен для использования системными администраторами.
Предварительные условия
Для настройки SSO-аутентификации необходимо:
- Наличие провайдера аутентификации, поддерживающего протокол OIDC.
- Доступ к серверу Мессенджер и ВКС.
- Доступ к серверу Почты VK WorkSpace (при ее наличии).
- Доступ в Панель администратора VK WorkSpace (при ее наличии).
Шаг 1. Включите в инсталляции сервис Stroma
-
Подключитесь к серверу Мессенджер и ВКС и перейдите в конфигурационный файл /usr/local/nginx-im/html/myteam/myteam-config.json:
-
Убедитесь, что:
- В файле присутствует флаг stroma-enabled и выставлен в значение true.
- В файле присутствует флаг messenger-silent-enabled и выставлен в значение true (необходим для включения флоу сайлент-токенов).
-
В файле указано значение для параметра stroma-api, и оно такое же, как у параметра main-api:
-
Если вы изменяли файл, пересоздайте pod админ-консоли командой:
Шаг 2. Настройте сервис Stroma
-
В конфигурационном файле сервиса Stroma /usr/local/etc/stroma-1.yaml указаны ключи подписи токенов по умолчанию. Измените их — задайте свои значения:
- Ключ подписи Json Web Token — в параметре auth.token_secret
- Ключ подписи одноразовых токенов — в параметре auth.one_time_code_secret
- Ключ подписи miniapp-токенов — в параметре auth.miniapp_api_token_salt
- Ключ подписи silent-токенов — в параметре auth.silent_token_salt
Далее перезапустите сервис Stroma командой:
-
Если в инсталляции нет Панели администратора VK WorkSpace, в конфигурационном файле сервиса Stroma /usr/local/etc/stroma-1.yaml укажите для параметра user_management значение stentor и перезапустите сервис Stroma командой:
-
Если в инсталляции нет сервиса SWA (компонент Почты VK WorkSpace), в конфигурационном файле сервиса Stroma /usr/local/etc/stroma-1.yaml:
-
Убедитесь в отсутствии секции swamail. При наличии — удалите ее.
-
Перезагрузите сервис Stroma командой:
-
Шаг 3. Настройте сервис Swapper
-
Сгенерируйте miniapp api secret для сервиса Swapper:
Запомните вывод этой команды — это miniapp api secret.
-
Вставьте miniapp api secret в ConfigMap сервиса Swapper по пути data → swapper.yaml → секция swap → параметр miniapp_api_token. Команда для изменения ConfigMap:
Шаг 4. Запустите программу настройки SSO-аутентификации
Запустите программу настройки SSO-аутентификации под пользователем с правами администратора:
Укажите параметры SSO-аутентификации:
- Type — тип IDP-провайдера (например ADFS или Keycloak).
- Service Title — название IDP-провайдера.
- Service Description — краткое описание IDP-провайдера.
- Auth URI — authorization endpoint, полученный из настроек IDP.
- Userinfo URI — user info endpoint, полученный из настроек IDP.
- Token URI — token endpoint, полученный из настроек IDP.
- Introspection URI — introspection endpoint, полученный из настроек IDP.
- Client ID — clientID, полученный из настроек IDP.
- Client Secret — clientSecret, полученный из настроек IDP.
- Domains (comma-separated) — через запятую укажите домены, для которых подключается SSO-аутентификация.
Пример настроек:
Type: KK
Service Title: Keycloak
Service Description: Our Keycloak
Auth URI: http://185.241.192.178:8080/realms/sso/protocol/openid-connect/auth
Userinfo URI: http://185.241.192.178:8080/realms/sso/protocol/openid-connect/userinfo
Token URI: http://185.241.192.178:8080/realms/sso/protocol/openid-connect/token
Introspection URI: http://185.241.192.178:8080/realms/sso/protocol/openid-connect/token/introspect
Client ID: <client id>
Client Secret: <client secret>
Domains (comma-separated): keycloak.sso-test.ru
Пример вывода:
successfully create IdentityProvider with id: 685b0b03-9e3c-40c9-a08f-181d039cc88e
successfully connect domain keycloak.sso-test.ru with provider 685b0b03-9e3c-40c9-a08f-181d039cc88e
successfully enable sso on domain: keycloak.sso-test.ru
successfully setup SSO with 685b0b03-9e3c-40c9-a08f-181d039cc88e provider
Если в инсталляции отсутствует Почта VK WorkSpace, настройка SSO-аутентификации завершена. Пропустите шаги 5-6.
Шаг 5. Включите SSO-аутентификацию в сервисе SWA
Если в инсталляции присутствует Почта VK WorkSpace и вы хотите настроить для нее сквозную авторизацию в Супераппе, выполните шаги ниже.
Примечание
При выполнении шагов 5-6, аутентификация в Почту будет также выполняться с помощью технологии SSO.
-
Выполните данный пункт до обновления Почты VK WorkSpace на версию 25.2.1.
На стороне Почты перейдите в директорию, в которую был распакован дистрибутив Почты при установке, и далее в конфигурационный файл configs/onlineconf/MAILAPI.conf. Удалите все фрагменты текста:
-
Подключитесь к сервису SWA и получите client_secret при помощи команды:
docker exec -it swadb1 mysql -D swa -e "select secret from swa.swa_clients where client_id='vk-teams';"Запомните вывод команды, он понадобится в пункте 6.
-
В конфигурационном файле configs/swa/goswa/goswa_acl.yaml проверьте наличие IP-адресов Панели администратора VK WorkSpace и Мессенджера и ВКС.
-
Подключитесь к БД сервиса SWA:
и проверьте, что для пользователя swa выделены гранты GRANT SELECT, INSERT, UPDATE:
Пример вывода команды:
+------------------------------------------------------------------+ | Grants for swa@% | +------------------------------------------------------------------+ | GRANT USAGE ON *.* TO swa@% | | GRANT SELECT ON swa.* TO swa@% | | GRANT SELECT, DELETE ON oauth.client TO swa@% | | GRANT SELECT, INSERT, UPDATE ON swa.sso_clients TO swa@% | #необходимые гранты пользователя swa +------------------------------------------------------------------+ 4 rows in set (0,01 sec) -
Подключитесь к серверу Мессенджер и ВКС и сформируйте секрет при помощи утилиты:
Подключитесь к серверу Почты VK WorkSpace и укажите секрет в конфигурационном файле сервиса gofau в секции idm в параметре client_secret:
-
Подключитесь к серверу Мессенджер и ВКС и добавьте в конфигурационный файл сервиса Stroma /usr/local/etc/stroma-1.yaml информацию о клиенте и базовом URL-адресе в секцию swamail:
-
Перейдите в конфигурационный файл /usr/local/nginx-im/html/myteam/myteam-config.json и скорректируйте секции mail, calendar и cloud:
-
Для параметра needs_auth укажите значение true.
-
Если SSO-аутентификация подключается для всех доменов инсталляции, установите значение true для параметра default (находится внутри секции is-public). Если для определенных доменов — перечислите их в секции is-public со значением true.
Пример заполненной секции mail:
"mail": { "external": false, "mail-android-app-urlscheme": "mail-onpremise-auth://", "mail-ios-app-urlscheme": "mailrumail-x-callback://", "mail-mobile-url": "https://e.vkwm-01.release.vkwm.ru/inbox", "needs_auth": true, #включаем SSO-аутентификацию "service-worker-enabled": true, "is-public": { "$switch-domain": { "default": false, #выключаем для всех доменов по умолчанию "company_domain_1.ru": true, #включаем для опреленных доменов "company_domain_2": true } }, "url": "https://e.vkwm-01.release.vkwm.ru/inbox", "compose_url": "https://e.vkwm-01.release.vkwm.ru/compose?wv=1" }, -
Шаг 6. Проверьте, что для домена подключена SSO-аутентификация
Если в инсталляции присутствует Почта VK WorkSpace:
Подключитесь к серверу Мессенджер и ВКС и выполните команду:
В выводе команды будет список доменов, для которых подключена SSO-аутентификация.
Как добавить домен для SSO-аутентификации
Вы можете добавить новый домен в настройки SSO-аутентификации следующими способами:
- В Панели администратора VK WorkSpace (при ее наличии в инсталляции).
- При помощи утилиты, если нет Панели администратора VK WorkSpace.
Чтобы узнать, для каких доменов уже подключена SSO-аутентификация, подключитесь к серверу Мессенджер и ВКС и выполните команду:
Если в инсталляции нет Панели администратора VK WorkSpace:
-
Получите ID-провайдера аутентификации:
-
Добавьте новый домен к IDP-провадеру:
где:
- new_domain — домен, для которого надо подключить SSO-аутентификацию.
- provider_id — ID провайдера аутентификации из предыдущего шага.
-
Включите на новом домене SSO-аутентификацию:
где new_domain — домен, для которого надо подключить SSO-аутентификацию.
Как изменить настройки SSO-аутентификации
Вы можете менять настройки SSO-аутентификации и управлять сессиями пользователей при помощи Панели администратора VK WorkSpace.
-
Подключитесь к серверу Мессенджер и ВКС и сгенерируйте client_id и client_secret:
creds=$(curl -s http://onpremise.stroma-1.weave.local:8036/api/v1/private/generate_credentials); \ client_id=$(echo $creds | jq -r ".client_id"); \ client_secret=$(echo $creds | jq -r ".client_secret"); \ client_secret_hash=$(echo $creds | jq -r ".client_secret_hash"); \ echo "tokeeper.request.add_application('biz', 'biz admin', '$client_id', '$client_secret_hash', '')" | sudo tarantoolctl eval tokeeper-1 echo $client_id echo $client_secretЗапомните выводы команд.
-
Перейдите в инсталлятор VK WorkSpace по адресу http://server-ip-address:8888 в раздел Настройки → Интеграции и включите переключатель VK Teams поддерживает авторизацию ЕСИА. Укажите client_id и client_secret и нажмите на кнопку Сохранить.
-
Подключите следующие фичи самостоятельно или с помощью технической поддержки:
-
sso-enabled.
-
tmp-new-reset-sessions — для управления сессиями пользователей через Панель администратора VK WorkSpace.
-
trust-swa — для создания пользователей.
-
-
Перейдите в Панель администратора VK WorkSpace в раздел Конфигурация → Настройки → Способы аутентификации и измените настройки SSO-аутентификации на домене. Чтобы управлять сессиями пользователей, перейдите в раздел Мессенджер → Аккаунты.