Как подключить вход через Keycloak, Azure AD, Okta, Google и другие OIDC-провайдеры: адрес возврата, секрет, роль по умолчанию и проверка входа.
Обновлено 29.10.2026
OIDC (OpenID Connect) - вход в volrix.pm через внешнего провайдера учетных записей: Keycloak, Azure AD (Entra ID), Okta, Google или любой совместимый. На странице входа появляется кнопка «Войти через <название провайдера>», а пароль и второй фактор человек вводит на стороне провайдера. OIDC можно включить вместе с LDAP / AD.
**Где находится:** «Администрирование» → «Доступ» → «Вход в систему», вкладка «Единый вход (OIDC)». Нужно право «OIDC SSO - Настройки OIDC SSO»; чтобы в меню был виден сам пункт «Вход в систему», нужно еще «LDAP / AD - Настройки LDAP / AD». По умолчанию оба права только у администратора системы.
В синей плашке вверху страницы показан адрес возврата (redirect URI), который нужно зарегистрировать у провайдера. Плашка собирает его из адреса, по которому вы открыли страницу, а сервер при входе берет адрес системы из настроек. Если администрирование открыто не по рабочему адресу (например, по IP и порту 3000), значения разойдутся. Регистрируйте у провайдера адрес такого вида, где https://pm.example.ru - адрес системы:
https://pm.example.ru/api/v1/auth/sso/oidc/callback
Смена «Адреса системы» меняет и адрес возврата: после нее зарегистрируйте новый адрес у провайдера, иначе вход остановится с ошибкой redirect_uri. Приложение volrix для компьютера и телефона входит через системный браузер и того же провайдера; отдельный адрес возврата для него у провайдера регистрировать не нужно.
Шаблоны Issuer URL: Keycloak - https://<сервер>/realms/<realm>; Azure AD - https://login.microsoftonline.com/<tenant_id>/v2.0; Okta - https://<tenant>.okta.com; Google - https://accounts.google.com. Завершающий слеш в адресе при сохранении убирается.
Значения читаются только из id_token - дополнительные данные у провайдера не запрашиваются. Если провайдер не кладет email или name в id_token, включите это на его стороне: в Keycloak - у маппера клиента параметр «Add to ID token»; в Azure AD - необязательное утверждение email в регистрации приложения. ФИО и email берутся при создании учетной записи и при следующих входах через OIDC не обновляются.
Коды системных ролей: user - Пользователь, expert - Эксперт, pm - Руководитель проекта, project_admin - Администратор проекта, eol - Единое ответственное лицо, finance - Финансист, office - Канцелярия, auditor - Аудитор, contract_manager - Контрактный менеджер, program_manager - Менеджер программы, portfolio_admin - Администратор портфеля, signer - Подписант, poa_approver - Уполномоченный по доверенностям. Что дает каждая роль - в статье Роли и доступы.
Пример для Keycloak: в нужном realm откройте «Clients» → «Create client». Тип - OpenID Connect, Client ID - например volrix. Включите «Client authentication» (конфиденциальный клиент) и «Standard flow». В «Valid redirect URIs» впишите адрес возврата из раздела выше. Секрет возьмите на вкладке «Credentials». Issuer URL - https://<сервер Keycloak>/realms/<realm>.
Для Azure AD: зарегистрируйте приложение, добавьте redirect URI типа Web, создайте секрет в «Certificates & secrets». Issuer URL - https://login.microsoftonline.com/<tenant_id>/v2.0.
volrix.pm использует Authorization Code с PKCE и передает секрет в теле запроса токена (client_secret_post) - провайдер должен это разрешать.
Ошибки, которые провайдер или сервер вернули до создания сеанса, страница входа показывает в красной строке с началом «SSO: ...». Ошибки создания учетной записи (нет email, email занят, нет мест, учетная запись недоступна) браузер показывает коротким текстом на пустой странице, без формы входа.
Вход по доменной учетной записи.
Сертификат и адрес системы.
Какие роли назначить после первого входа.