Единый вход через Keycloak
Настройка единого входа в Trialix через Keycloak по OpenID Connect или SAML 2.0. Оба варианта проверены вживую и проверяются автотестом на каждом выпуске Trialix (Keycloak 26.4): проверочный вход, вход сотрудника, группы в отделы, TOTP для администраторов, отклонение поддельного ответа SAML. Общие правила единого входа - в разделе «Вход в компанию и Яндекс 360».
Перед началом
- В лицензии компании есть единый вход (тарифы Бизнес и Корпорация).
- В ЛК, «Вход в компанию», «Домены компании» подтверждён домен почты сотрудников.
- У пользователей Keycloak заполнена почта на этом домене.
- Для OIDC: адреса Keycloak доступны из интернета по HTTPS с сертификатом, которому доверяют публичные браузеры. Серверы Trialix сами обращаются к discovery, token endpoint и JWKS. Для SAML достаточно, чтобы Keycloak был доступен браузеру сотрудника: ответ приходит через браузер.
Адреса Trialix
| Что | Значение |
|---|---|
| Redirect URI (OIDC) | https://app.trialix.ru/auth/sso/callback |
| Entity ID и метаданные SP (SAML) | https://app.trialix.ru/auth/sso/saml/metadata/<ID компании>, точный адрес показан в мастере |
| ACS (SAML, HTTP-POST) | https://app.trialix.ru/auth/sso/saml/acs |

Вариант 1. OpenID Connect
Клиент в Keycloak
- Консоль администратора Keycloak, нужный realm, «Clients», «Create client».
- «Client type»: OpenID Connect. «Client ID»: например
trialix. «Next». - «Capability config»: «Client authentication» - On, «Standard flow» - On, «Direct access grants» - Off. «Next».
- «Login settings»: «Valid redirect URIs» -
https://app.trialix.ru/auth/sso/callback. «Save». - Вкладка «Credentials»: скопируйте «Client secret».
- Рекомендуем: вкладка «Advanced», «Proof Key for Code Exchange Code Challenge Method» -
S256. Trialix всегда отправляет PKCE S256.
Группы и признак MFA
- «Clients»,
trialix, вкладка «Client scopes»,trialix-dedicated, «Add mapper», «By configuration», «Group Membership». - «Name» и «Token Claim Name»:
groups. «Full group path» - Off. «Add to ID token» - On. «Save». - Чтобы Trialix видел многофакторный вход и не спрашивал у администраторов TOTP повторно: в Keycloak 25 и новее добавьте тем же способом mapper «Authentication Method Reference (AMR)» с «Add to ID token» - On. Trialix принимает значения
otp,mfa,hwk,sms,swk,fido,totpвamrили уровни2,3,aal2,aal3,loa2,loa3вacr.
Параметры в ЛК
ЛК, «Вход в компанию», карточка «Единый вход (SSO)»:
| Поле | Значение |
|---|---|
| Провайдер | Keycloak |
| Discovery URL или issuer | https://sso.company.ru/realms/company или полный адрес https://sso.company.ru/realms/company/.well-known/openid-configuration |
| Client ID | trialix |
| Client secret | секрет из вкладки «Credentials» |
| Scope | openid email profile |
| Утверждение с группами | groups |
«Сохранить параметры». Trialix сразу проверяет адрес discovery и сообщает, если он не отвечает.
Вариант 2. SAML 2.0
Клиент в Keycloak
- «Clients», «Create client». «Client type»: SAML. «Client ID»: Entity ID из мастера Trialix (
https://app.trialix.ru/auth/sso/saml/metadata/<ID компании>). «Next». - «Valid redirect URIs» и «Assertion Consumer Service POST Binding URL» (вкладка «Advanced»):
https://app.trialix.ru/auth/sso/saml/acs. «Save». - Вкладка «Settings», блок «SAML capabilities»: «Name ID format» - email, «Force name ID format» - On, «Force POST binding» - On.
- Блок «Signature and Encryption»: «Sign documents» - On, «Sign assertions» - On. Trialix требует подпись и ответа, и утверждения.
- Вкладка «Keys»: «Client signature required» - Off. Запросы Trialix не подписываются.
- Вкладка «Client scopes»,
…-dedicated, «Add mapper», «By configuration»:- «User Property»: Property
email, SAML Attribute Nameemail, NameFormat Basic; - «Group list»: SAML Attribute Name
groups, «Full group path» - Off; - для имени и фамилии - «X500 givenName» и «X500 surname».
- «User Property»: Property
Параметры в ЛК
| Поле | Значение |
|---|---|
| Провайдер | Другой SAML 2.0 |
| Адрес входа IdP (SSO URL) | https://sso.company.ru/realms/company/protocol/saml |
| Entity ID провайдера | https://sso.company.ru/realms/company |
| Сертификат подписи IdP (PEM) | «Realm settings», «Keys», ключ RS256, «Certificate»; или значение ds:X509Certificate из https://sso.company.ru/realms/company/protocol/saml/descriptor |
| Атрибут с группами | groups |
Сертификат можно вставить с заголовками -----BEGIN CERTIFICATE----- или без них.
Проверочный вход и включение
- В карточке «Единый вход (SSO)» нажмите «Проверить вход».
- Войдите в Keycloak учётной записью сотрудника с почтой на подтверждённом домене. Учётная запись в Trialix при этом не создаётся.
- Trialix покажет «Проверка пройдена: провайдер вернул …, группы: …». Если группы не пришли - проверьте mapper.
- Нажмите «Включить SSO для сотрудников». Состояние сменится на «включён».
- В карточке «Правила входа» задайте сопоставление групп и отделов, например
trialix-lawyers = Юридический отдел, и остальные правила (см. «Правила входа»).
Любое изменение параметров снимает отметку проверки, и SSO включается снова только после новой проверки.
Частые ошибки
| Сообщение | Что сделать |
|---|---|
| «Провайдер не отвечает по адресу discovery» | адрес Keycloak недоступен из интернета или сертификат не доверенный |
| «Провайдер отказал при обмене кода: invalid_client» | неверный Client secret или выключено «Client authentication» |
| «Провайдер отказал при обмене кода: invalid_grant» | Redirect URI в клиенте не совпадает с https://app.trialix.ru/auth/sso/callback |
| «Провайдер вернул …: домен не подтверждён для компании» | у пользователя почта не на подтверждённом домене |
| «Подпись ответа SAML не прошла проверку» | в Trialix вставлен не тот сертификат или в Keycloak выключено «Sign documents» или «Sign assertions» |
Полный список - в разделе «Диагностика ошибок».
Обновлено 29.09.2026