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

Ошибки

Коды ошибок OAuth-эндпоинтов и API управления клиентами — что означают и что делать.

У провайдера два вида ошибок:

  • Протокольные (/authorize, /token, /userinfo, /revoke, discovery, JWKS) — стандартный формат OAuth: JSON {"error": "<code>"} или параметр error в redirect_uri. Поля error_description нет — смотрите на код и HTTP-статус.
  • API приложения Calab (/api/workspaces/{workspace}/oauth/clients…, /api/me/oauth-grants…, экран согласия) — обычный ApiError Calab: {code, message, field?, reason?}.

Протокольные ошибки

errorHTTPГдеЧто значит и что делать
invalid_request400всеНет или повторяется параметр, неверный client_id / redirect_uri, нет state или nonce, неверный code_challenge, лишняя query-строка у /token, запрещённый параметр (request, claims, id_token_hint…). Исправьте запрос. Для неизвестного пространства в discovery/JWKS — 404.
unsupported_response_type303 → redirect/authorizeresponse_type не code.
invalid_scope303 → redirect / 400/authorize, /tokenScope вне openid profile email, без openid, шире разрешённого клиенту; на refresh — попытка расширить scopes.
access_denied303 → redirect/authorizeПользователь нажал «Отказать», либо у пространства нет тарифа Business / Enterprise, провайдер не включён или пространство приостановлено.
login_required303 → redirect/authorizeПри prompt=none: нет сессии Calab или вход слишком старый для max_age. Запустите обычный вход.
consent_required303 → redirect/authorizeПри prompt=none: согласия нет, оно покрывает меньше scopes, чем запрошено, или клиент переименован. Запустите вход без prompt=none.
interaction_required303 → redirect/authorizeПри prompt=none: нужен шаг с участием человека (например, корпоративный вход). Запустите обычный вход.
temporarily_unavailable429 / 303 → redirectвсеСработал лимит запросов (см. Retry-After) или слишком много незавершённых входов с одного IP. Повторите позже.
server_error503 / 303 → redirectвсеВременный сбой или identity не настроена на этой установке. Повторите позже; если не проходит — к оператору.
invalid_client401/token, /revokeНеверный или отключённый клиент, неверный секрет, секрет в теле вместо Authorization: Basic, Basic у публичного клиента. Ответ содержит WWW-Authenticate: Basic realm="oauth".
invalid_grant400/tokenCode истёк/использован/выдан другому клиенту, не совпали redirect_uri или code_verifier, refresh token недействителен, доступ отозван или права человека изменились. Начните вход заново.
unsupported_grant_type400/tokengrant_type не authorization_code и не refresh_token.
invalid_token401/userinfoAccess token неверен, истёк или отозван. Ответ содержит WWW-Authenticate: Bearer error="invalid_token".

Ошибки /authorize приходят на ваш redirect_uri (с state и iss) только после того, как Calab проверил client_id и redirect_uri. Если проверка не прошла, ошибка invalid_request показывается прямо в браузере.

Токен бота в любом OAuth-эндпоинте получает 403 access_denied (в /userinfo — 401 invalid_token).

Лимиты запросов

До аутентификации считаются запросы с IP; после проверки клиента и токена — на пару «клиент + пользователь».

ЭндпоинтПо IPНа клиента и пользователя
/token120/мин; публичный клиент — ещё 60/мин на client_id с IP30/мин
/userinfo600/мин60/мин
/authorize60/мин—
/revoke120/мин—
discovery, JWKS, preflight120/мин—

Превышение — 429 temporarily_unavailable с заголовком Retry-After (секунды).

Ошибки API управления и согласия

Тело — ApiError Calab в protojson:

JSON
{
  "code": "ERROR_CODE_RECENT_AUTH_REQUIRED",
  "message": "identity access denied"
}
HTTPcode / reasonЧто значит
401ERROR_CODE_UNAUTHENTICATEDНет сессии или она недействительна.
403ERROR_CODE_RECENT_AUTH_REQUIREDНужно «Подтвердить пароль» (не старше 5 минут) или войти свежим локальным входом.
403ERROR_CODE_SSO_REQUIREDПространство требует свежий корпоративный вход — «Подтвердить корпоративный вход».
403ERROR_CODE_IDENTITY_SCOPE_DENIEDНет прав: не владелец/администратор, гость, бот или SSO-сессия другого пространства.
403ERROR_CODE_DIRECTORY_ACCESS_DENIEDКаталог (AD) не допускает участника или давно не синхронизировался.
403ERROR_CODE_WORKSPACE_SUSPENDEDПространство приостановлено.
403ERROR_CODE_RECOVERY_ONLYСессия восстановления: в ней можно только чинить политику SSO.
404ERROR_CODE_NOT_FOUNDКлиент или доступ не найден.
409ERROR_CODE_CONFLICT, reason: "PLAN_LIMIT"Нет тарифа Business / Enterprise, 20 активных клиентов или уже два действующих секрета.
409ERROR_CODE_CONFLICT, reason: "IDENTITY_CONFIG_CHANGED"Клиент изменился с момента чтения (version устарела) или переименован во время согласия. Перечитайте и повторите.
409ERROR_CODE_CONFLICT, reason: "IDENTITY_NOT_CONFIGURED"На этой установке identity не настроена оператором.
422ERROR_CODE_VALIDATIONНеверные поля клиента: имя, redirect URI, origins, scopes, тип.
503ERROR_CODE_IDENTITY_DEPENDENCY_UNAVAILABLEВременно недоступна зависимость (база, каталог). Повторите позже.

Общий справочник кодов Calab — в Справочнике ошибок.