Перейти к содержимому
CalabДокументация

Подключение 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 tokenRS256, ключи из jwks_uri
Claimssub (до 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)

text
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

  1. Создайте в IdP OIDC-клиента типа «confidential» (веб-приложение с секретом). Публичный клиент тоже допустим — тогда поле секрета в Calab оставьте пустым.
  2. Разрешите поток Authorization Code и PKCE S256.
  3. Убедитесь, что в ID token попадает auth_time.
  4. Запишите 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. Привязка и проверка

  1. В карточке «Привязать корпоративный вход» привяжите свою корпоративную учётную запись: Calab попросит пароль личного аккаунта и откроет вход в IdP в системном браузере. Пока активного подключения нет, привязка идёт к черновику.
  2. В карточке «Проверка и активация» нажмите «Проверить вход в браузере» и войдите в IdP той же учётной записью. Проверка не создаёт сессию и не даёт доступ — только отмечает подключение проверенным (IDENTITY_CONNECTION_STATUS_TESTED).
  3. В течение 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.