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

Диагностика

Типовые ошибки корпоративного входа и каталога — что видит пользователь, что отвечает API и как исправить.

Ошибки API приходят в обычном формате ApiError — {code, message, reason?}, где code — значение ErrorCode (например, ERROR_CODE_SSO_REQUIRED). Общая таблица кодов — в справочнике ошибок.

Коды ошибок идентификации

HTTPcode / reasonЧто значитЧто делать
403SSO_REQUIREDНужно свежее подтверждение SSO: его нет, оно старше 1 часа или стало недействительным после смены подключения«Подтвердить корпоративный вход» или войти через SSO
403RECENT_AUTH_REQUIREDНужно подтвердить пароль (вход не старше 5 минут) или, для включения обязательного режима, свежий SSO«Подтвердить пароль», затем повторить
403IDENTITY_SCOPE_DENIEDКорпоративная сессия обращается за пределы своего пространства (ЛС, заметки, другое пространство) или действие недоступно этой ролиВойти в личный аккаунт
403DIRECTORY_ACCESS_DENIEDКаталог закрыл доступ: учётная запись отключена, удалена, вне разрешённых групп, или синхронизации не было больше часаПроверить учётную запись в AD и «Последнюю успешную синхронизацию»
403RECOVERY_ONLYСессия восстановления пытается сделать что-то кроме ремонта политикиСменить политику; для остального войти обычным способом
403FORBIDDEN, «identity access denied»IdP вернул ответ, который Calab не принял (см. ниже), или вход другой учётной записьюСм. «Проверка подключения не проходит»
409CONFLICT, reason: "PLAN_LIMIT"У пространства нет тарифа Business/Enterprise для этой функцииСменить тариф
409IDENTITY_CONFIG_CHANGEDНастройки изменились, пока вы их редактировали (устаревшая version)«Обновить» и повторить
409IDENTITY_NOT_LINKEDУчётная запись IdP не привязана ни к одному аккаунту в этом пространствеВойти в личный аккаунт и «Привязать корпоративный вход»
409CONFLICT, reason: "IDENTITY_NOT_CONFIGURED"На сервере не заданы переменные IDENTITY_*Обратиться к оператору — см. для операторов
429—Слишком много попыток входа, обмена или изменений; заголовок Retry-AfterПодождать
503IDENTITY_DEPENDENCY_UNAVAILABLEВременная недоступность базы, IdP или каталогаПовторить позже; доступ вернётся сам

Проверка подключения не проходит

Calab не раскрывает в ответе браузеру точную причину отказа IdP — это защита от подбора. Проверьте по списку:

  1. Адрес возврата. В IdP зарегистрирован ровно https://id.example.com/api/auth/sso/callback/<connection-id>, с ID текущего подключения. После смены Issuer URL или Client ID ID новый.
  2. Issuer. Поле issuer в <issuer>/.well-known/openid-configuration посимвольно совпадает с «Issuer URL», включая завершающий /, если он есть.
  3. auth_time. ID token содержит auth_time. В Entra — optional claim (см. Entra). Без него сервер пишет в аудит событие auth_time_missing.
  4. PKCE. Если discovery перечисляет code_challenge_methods_supported, там есть S256. Для AD FS список обязателен.
  5. Подпись. ID token подписан RS256.
  6. Та же учётная запись. Проверку проходит владелец той учётной записью IdP, которую он привязал к своему аккаунту.
  7. Секрет. Секрет действителен и не истёк. Для Entra — Value, а не Secret ID.
  8. Время. Часы IdP расходятся с сервером Calab не больше чем на 60 секунд.
  9. Сеть. IdP доступен по публичному HTTPS, или оператор добавил все его URL в IDENTITY_ENDPOINTS; IdP не отвечает редиректом на discovery/JWKS/token.

«Активировать» неактивна или отклоняется

  • Подключение ещё не проверено или изменено после проверки — проверьте снова.
  • С проверки прошло больше 5 минут — проверьте снова и сразу активируйте.
  • При обязательном SSO нет действующего recovery kit — создайте его.

Нельзя включить «Обязательный SSO»

Нужны одновременно: активное проверенное подключение, привязанная учётная запись владельца, свежие (≤ 5 минут) пароль и SSO, действующий recovery kit и отметка «Recovery kit сохранён». См. режимы.

Сотрудник не может войти через SSO

СимптомПричина
Нет кнопки «Войти через SSO» для пространстваНет активного проверенного подключения, пространство приостановлено или нет тарифа
После входа в IdP — «не привязано»Сотрудник не выполнил «Привязать корпоративный вход» из личного аккаунта. Совпадение email не привязывает
Вход прошёл, но пространство закрытоЗакрыл каталог (DIRECTORY_ACCESS_DENIED) или участник забанен/удалён
«Вход истёк. Начните заново.»Вход в IdP не завершён за 5 минут или билет десктопа не использован за 60 секунд
Гость не может войтиПри обязательном SSO гостевой доступ закрыт — см. режимы

Каталог

СимптомПричина
Не сохраняются настройкиХост не в IDENTITY_DIRECTORY_HOSTS или не в разрешённых сетях; URL не ldaps://…:636; неверный DN; больше 100 групп
«Directory synchronization unavailable»Нет соединения, сертификат не прошёл проверку, неверный пароль bind, снимок больше 100 000 записей или не уложился в 120 секунд
«Directory scan returned far fewer accounts than before…»Карантин: снимок пустой или резко меньше прежнего. Проверьте права служебной учётной записи; если сокращение настоящее — сохраните настройки ещё раз
Все управляемые участники потеряли доступБольше часа без успешной синхронизации, или настройки только что сохранены и синхронизация ещё не прошла
Участник снова включён в AD, но доступа нетНужна успешная синхронизация, затем новый вход через SSO. Ручной бан каталог не снимает

Где смотреть подробности

Каждое действие с подключением, политикой, каталогом и восстановлением записывается в журнал аудита сервера (например, connection_activated, policy_changed, directory_changed, recovery_session_issued). В собственной установке его просматривает оператор.