#351: SSO через OpenID Connect v1 в KeyCloack

Симптомы

Поддерживает ли Swarmica SSO через OpenID?

Поддерживает ли Swarmica SSO через KeyCloak?

Решение

Да, SSO через OpenID Connect v1 в KeyCloak поддерживается.

Для этого нужно настроить Client в KeyCloak и дать данные доступа в поддержку Swarmica:

  • REALM (например, master)
  • URL (например, https://mykeycloack.company.tld )
  • CLIENT_ID (например, swarmica_app)
  • CLIENT_SECRET (тот, что будет сгенерирован автоматически)

Для настройки выполните следующие шаги:

  1. Зайдите в административную панель KeyCloak, выберите Realm (и запомните его название - оно будет установлено поддержкой Swarmica в качестве REALM) > Clients > Create client
  2. Задайте название для клиентского приложения Client ID (например, swarmica_app) по протоколу OpenID Connect:
  3. На следующем экране включите Аутентификацию клиента:
  4. На следующем экране задайте разрешенные адреса перенаправления, чтобы там был указан адрес вашего инстанса Swarmica. Если у вас есть затруднения с тем, какой адрес указать – обратитесь к нам в поддержку, мы поможем.
    Для случая, когда адрес вашего инстанса yourinstance.domain.tld настройки будут выглядеть вот так:
  5. Сохраните изменения и в созданном клиентском приложении зайдите на вкладку Credentials, поставьте Client Authenticator в значение Client Id and Secret и скопируйте Client Secret:
  6. Зайдите на сервер Swarmica по SSH и добавьте в переменную .env следующие параметры:
    • Добавить в AUTH_PROVIDERS пункт oidc (в нижнем регистре)
    • OIDC_DEFAULT_ROLE - роль пользователя, если не ставить - будет CUSTOMER
    • OIDC_REALM_NAME - название REALM в Keycloak
    • OIDC_SERVER_URL - сервер keycloak, без слеша на конце
    • OIDC_CLIENT_ID - id клиента внутри REALM на Keycloak, задаётся при создании клиента
    • OIDC_CLIENT_SECRET - секрет клиента, выдаётся на вкладке Credentials внутри клиента Keycloak
    • OIDC_TIMEOUT - сколько ждать ответа от сервера, по-умолчанию 30 сек
  7. Сделайте рестарт системы:
docker compose up -d