Подключение OpenID Connect
Пошаговое подключение любого OIDC-провайдера (Keycloak, Okta, Authentik и др.) к пространству.
Этот путь подходит любому провайдеру, который поддерживает OpenID Connect Discovery и Authorization Code с PKCE. Для Microsoft Entra ID и AD FS есть отдельные страницы с их особенностями: Entra, AD FS.
Что Calab требует от IdP
| Требование | Подробности |
|---|---|
| Discovery | <issuer>/.well-known/openid-configuration доступен по HTTPS; поле issuer в нём точно совпадает с Issuer URL подключения |
| Поток | Authorization Code + PKCE S256. Если discovery перечисляет code_challenge_methods_supported, в списке обязан быть S256 |
| Подпись ID token | RS256, ключи из jwks_uri |
| Claims | sub (до 512 символов), aud = Client ID, nonce, iat, exp и auth_time — обязательно |
| Аутентификация клиента | client_secret_basic; client_secret_post, если IdP объявляет только его. Без секрета — публичный клиент с одним PKCE |
| Сеть | Публичные HTTPS-адреса. Внутренний IdP — только если оператор разрешил его адрес (см. для операторов) |
Calab запрашивает только scope openid и при каждом входе передаёт prompt=login и max_age=3600. Email, имя и группы из IdP не используются: личность определяется только парой «подключение + sub».
Адрес возврата (redirect URI)
https://id.example.com/api/auth/sso/callback/<connection-id>https://id.example.com— origin корпоративного входа вашей установки (переменнаяIDENTITY_PUBLIC_ORIGIN; в облаке Calab — адрес приложения). Его можно узнать у оператора.<connection-id>— ID SSO-подключения в Calab. Он появляется после первого сохранения подключения и возвращается в полеconnection.idответаGET /api/workspaces/{workspace_id}/identity.
Шаг 1. Приложение в IdP
- Создайте в IdP OIDC-клиента типа «confidential» (веб-приложение с секретом). Публичный клиент тоже допустим — тогда поле секрета в Calab оставьте пустым.
- Разрешите поток Authorization Code и PKCE
S256. - Убедитесь, что в ID token попадает
auth_time. - Запишите Issuer URL, Client ID и секрет. Адрес возврата добавите на шаге 3.
Пример для Keycloak: Issuer URL — https://sso.example.com/realms/corp; стандартные клиентские scopes realm уже включают auth_time в ID token.
Шаг 2. SSO-подключение в Calab
Настройки пространства → «Настройка SSO» → карточка «SSO-подключение». Подтвердите пароль, если Calab попросит.
| Поле | Значение |
|---|---|
| «Название» | Подпись кнопки входа для сотрудников, 1–100 символов, например «Вход через Keycloak» |
| «Провайдер» | «OpenID Connect» |
| «Issuer URL» | Точный issuer, например https://sso.example.com/realms/corp — без query и фрагмента |
| «Client ID» | ID приложения из IdP |
| «Секрет клиента» | Секрет из IdP; пустое поле сохраняет текущий секрет |
Нажмите «Сохранить». Подключение создаётся в статусе черновика (IDENTITY_CONNECTION_STATUS_DRAFT).
Шаг 3. Адрес возврата в IdP
Возьмите connection.id и добавьте в IdP адрес возврата https://id.example.com/api/auth/sso/callback/<connection-id>. Адрес должен совпадать посимвольно.
Шаг 4. Привязка и проверка
- В карточке «Привязать корпоративный вход» привяжите свою корпоративную учётную запись: Calab попросит пароль личного аккаунта и откроет вход в IdP в системном браузере. Пока активного подключения нет, привязка идёт к черновику.
- В карточке «Проверка и активация» нажмите «Проверить вход в браузере» и войдите в IdP той же учётной записью. Проверка не создаёт сессию и не даёт доступ — только отмечает подключение проверенным (
IDENTITY_CONNECTION_STATUS_TESTED). - В течение 5 минут после успешной проверки нажмите «Активировать проверенное подключение». Подключение становится активным (
IDENTITY_CONNECTION_STATUS_ACTIVE), прежнее активное — если было — отключается.
Шаг 5. Сотрудники
Каждый сотрудник один раз привязывает свою учётную запись: входит в личный аккаунт, открывает «Настройка SSO» пространства и нажимает «Привязать корпоративный вход». После этого он может входить кнопкой «Войти через SSO» на экране входа, указав «Адрес пространства».
Смена секрета
Новый секрет при тех же Issuer URL и Client ID обновляет то же подключение, но:
- сбрасывает проверку — подключение нужно проверить и активировать снова;
- сразу отзывает подтверждения SSO, корпоративные сессии и OAuth-доступы этого подключения, а также незавершённые входы.
Calab предупредит: «Смена секрета отзовёт подтверждения и потребует повторного входа». Планируйте ротацию на тихое время; при обязательном SSO заранее сохраните recovery kit.
Сетевые ограничения
Запросы к IdP (discovery, JWKS, обмен кода) идут с таймаутом 10 секунд, с ответом не больше 1 МиБ и без перехода по редиректам. Адреса внутренней сети, loopback и метаданные облака запрещены, пока оператор явно не разрешил конкретный URL.