VMmanager
Режим фокусировки

Авторизация через SSO

В статье используются следущие термины:

Вы можете настроить авторизацию пользователей в платформе через SSO. В качестве сервера SSO поддерживаются решения, работающие по протоколу OIDC. Например, Keycloak или AD FS.

В платформе поддерживается авторизация только через один сервер SSO.

Логика работы

Если в платформе настроена авторизация через SSO, то на странице входа в платформу появляется кнопка Войти через SSO. Для авторизации через SSO пользователю нужно:

  1. Нажать кнопку Войти через SSO. Во вкладке браузера откроется страница авторизации сервера SSO.
  2. Ввести свои данные для входа в SSO. Во вкладке браузера откроется интерфейс платформы.

В настройках подключения к серверу SSO вы можете включить опцию Управление пользователями и указать каким ролям OIDC какие роли и группы пользователей будут соответствовать. В этом случае, если пользователь авторизуется через SSO, то его роли и группы будут установлены в соответствии с заданными настройками. Если учётной записи с таким e-mail нет в платформе, то она будет создана. Если роль OIDC для пользователя не указана в настройках, то авторизация не будет выполнена. 

Для учётных записей, созданных при авторизации через SSO, в таблице пользователей указывается источник — OIDC. Если удалить подключение к серверу SSO, то пользователи с источником OIDC будут заблокированы. Если восстановить подключение, блокировка у этих пользователей будет снята.

Ограничения

Совместное использование SSO и LDAP

Если вы планируете использовать синхронизацию с каталогом LDAP и авторизацию через SSO, то для корректной работы платформы:

  1. Сначала настройте синхронизацию с каталогом LDAP, а затем авторизацию через SSO. 
  2. Чтобы избежать конфликтов в работе LDAP и SSO, не используйте опцию Управление пользователями в настройках подключения к SSO.

Настройка на стороне SSO

Keycloak

Сохраните URL конфигурации SSO:

  1. Перейдите в раздел Realm settings.
  2. В параметре Endpoints скопируйте ссылку OpenID Endpoint Configuration. Обычно ссылка имеет вид https://example.com/realms/your_realm_name/.well-known/openid-configuration, где example.com — доменное имя или IP-адрес сервера SSO, your_realm_name — название Realm. Это значение нужно будет указать в платформе при подключении авторизации по SSO в поле URL конфигурации SSO.

Создайте нового клиента для подключения:

  1. Перейдите в раздел Clients → кнопка Create client.
  2. На шаге General settings:
    1. В поле Client type выберите OpenID Connect.
    2. В поле Client ID введите уникальный идентификатор клиента. Это значение нужно будет указать в платформе при подключении авторизации по SSO в поле Client ID.
    3. В поле Name укажите произвольное имя клиента.
    4. Нажмите кнопку Next.
  3. На шаге Capability config:
    1. Включите опцию Client authentication.
    2. В параметре Authentication flow оставьте включённой опцию Standard flow — стандартная аутентификация OIDC.
    3. В параметре PKCE Method оставьте пустое значение — PKCE не используется.
    4. Нажмите кнопку Next.
  4. На шаге Login settings:
    1. В поле Valid redirect URIs укажите адрес вида https://example.com/auth/sso, где example.com — доменное имя или IP-адрес платформы. На указанный адрес будет выполняться перенаправление после аутентификации пользователя. Это значение (без суффикса /auth/sso) нужно будет указать в платформе при подключении авторизации по SSO в поле Адрес платформы VMmanager.
    2. В поле Web origins укажите адрес вида https://example.com, где example.com — доменное имя или IP-адрес платформы.
    3. Нажмите кнопку Save.
  5. Перейдите на вкладку Credentials:
    1. В параметре Client Authenticator оставьте значение Client ID and Secret — аутентификация по Client ID и Client secret.
    2. Сохраните значение из поля Client Secret. Это значение нужно будет указать в платформе при подключении авторизации по SSO в поле Client secret.
  6. Перейдите на вкладку Advanced:
    1. В параметре ID token signature algorithm выберите значение RS256 — алгоритм RS256 для подписи токенов.
    2. В параметрах ID token encryption key management algorithm и ID token encryption content encryption algorithm выберите пустое значение —  шифрование токенов отключено.
    3. Нажмите кнопку Save.
  7. Перейдите на вкладку Client Scopes и укажите настройки, чтобы ответ сервера содержал данные о группах пользователя: 
    1. Нажмите на запись вида <Client_id>-dedicated → кнопка Configure a new mapper → тип Group Membership.
    2. В поле Name введите произвольное имя.
    3. В поле Token Claim Name введите member_of
    4. Оставьте включённой опцию Add to ID token.
    5. Нажмите кнопку Save.

AD FS (Windows Server 2025)

Сохраните URL конфигурации SSO:

  1. Перейдите в ServiceEndpoints.
  2. В разделе OpenID Connect сохраните значение URL Path для параметра OpenID Connect Discovery. Обычно оно имеет вид /adfs/.well-known/openid-configuration Это значение вместе с доменным именем нужно будет указать в платформе при подключении авторизации по SSO в поле URL конфигурации SSO. Например, https://example.com/adfs/.well-known/openid-configuration 
    При настройке авторизации необходимо указать доменное имя в формате FQDN. Например, https://example.com. Авторизация по IP-адресу сервера не поддерживается.

Создайте новую группу приложений:

  1. Перейдите в Application Groups Add Application Group.
  2. На шаге Welcome:
    1. В поле Name введите произвольное имя.
    2. Выберите шаблон Server application accessing a Web API.
  3. На шаге Server application:
    1. Укажите новое значение Client Identifier или используйте существующее. Это значение нужно будет указать в платформе при подключении авторизации по SSO в поле Client ID.
    2. В поле Redirect URI укажите адрес вида https://example.com/auth/sso, где example.com — доменное имя или IP-адрес платформы, и нажмите кнопку Add. На указанный адрес будет выполняться перенаправление после аутентификации пользователя. Это значение (без суффикса /auth/sso) нужно будет указать в платформе при подключении авторизации по SSO в поле Адрес платформы VMmanager.
  4. На шаге Configure Application Credentials:
    1. Включите опцию Generate a shared secret.
    2. Сохраните значение из поля Secret. Это значение нужно будет указать в платформе при подключении авторизации по SSO в поле Client secret.
  5. На шаге Configure Web API:
    1. В поле Identifier введите vmmanager6
    2. Нажмите кнопку Add
  6. На шаге Configure Application Permissions:
    1. В разделе Permitted scopes включите опцию openid.

Чтобы ответ сервера содержал данные о группах пользователя:

  1. Откройте настройки группы: выберите группу → Properties.
  2. В окне Properties выберите Web API → кнопка Edit.
  3. Перейдите на вкладку Issuance Transform Rules → кнопка Add rule.
  4. Выберите шаблон Send LDAP Attributes as Claims → кнопка Next.
  5. В поле Claim rule name введите произвольное имя правила.
  6. В поле Attribute store выберите Active Directory.
  7.  В столбце LDAP Attribute выберите одно из значений, которое начинается с Token-Groups. От этого зависит, в каком формате нужно будет указать Роль OIDC при подключении авторизации по SSO в платформе:
    • Token-Groups as SIDs — SID группы. Например, S-1-5-21-123456789-123456;
    • Token-Groups - Qualified by Domain Name — доменное имя в формате NetBIOS и имя группы. Например, DOMAIN\Admins;
    • Token-Groups - Qualified by Long Domain Name — доменное имя в формате FQDN и имя группы. Например, example.com\Admins;
    • Token-Groups - Unqualified Names — только имя группы. Например, Admins.
  8. В столбце Outgoing Claim Type введите member_of
  9. Нажмите кнопку Finish OK OK.

Настройка на стороне платформы

Для управления авторизацией через SSO в правом меню нажмите значок  → вкладка Глобальные настройки → раздел Авторизация через SSO. Если авторизация подключена, в разделе отображается URL конфигурации. Если нет, отображается сообщение "Не подключена".



Чтобы подключить авторизацию:

  1. Нажмите кнопку подключить.
  2. Если вы уже настраивали авторизацию через SSO в этой платформе, на форме настройки появится баннер "Найдена сохраненная конфигурация SSO". Чтобы использовать добавленную конфигурацию, нажмите кнопку Использовать
  3. Если требуется использовать новую конфигурацию, укажите настройки авторизации:
    1. URL конфигурации SSO.
    2. Client ID.
    3. Client secret
    4. Адрес платформы VMmanager.
    5. Чтобы авторизация выполнялась только для пользователей с e-mail, подтверждённым на сервере регистрации, включите опцию Только с подтвержденным e-mail
      Опция не поддерживается для AD FS.
    6. Чтобы платформа могла создавать пользователей из SSO и настраивать их права:
      1. Включите опцию Управление пользователями.
      2. Укажите правила для соответствия ролей OIDC ролям в платформе. Для этого:
        1. Нажмите кнопку Добавить.
        2. Введите Роль OIDC.
        3. Выберите Роли платформы. Для каждой роли OIDC вы можете выбрать одну преднастроенную роль (Администратор, Продвинутый пользователь, Пользователь) или любое число пользовательских ролей.
        4. Если нужно добавить пользователей в группы, выберите Группы пользователей.
        5. Чтобы добавить ещё одно правило, нажмите кнопку Добавить. Чтобы удалить правило, нажмите значок  .
  4. Нажмите кнопку Подключить
    Платформа не проверяет значения параметров Client ID и Client secret при сохранении настроек. Чтобы протестировать подключение, авторизуйтесь под любым пользователем через SSO.




Чтобы отключить авторизацию, нажмите кнопку отключить.

Чтобы изменить настройки авторизации, нажмите кнопку изменить и укажите новые настройки.

Диагностика

Для диагностики проблем, связанных с авторизацией через SSO, изучите логи контейнера auth.