Перейти к основному содержимому

Коды ошибок аутентификации (mpbx-auth)

Возвращаются ядром аутентификации (W1-AUTH-01) и движком RBAC (W1-AUTH-02). Типы переводятся в HTTP-статусы, как для общих кодов: unauthenticated — 401, permission_denied — 403, invalid_argument — 400, not_found — 404, conflict — 409, unavailable — 503, config и internal — 500. Сообщения никогда не содержат пароль, токен, хеш, ключ или адрес электронной почты. Руководство: аутентификация.

КодТипЗначениеЧто делать
MPBX-AUTH-INVALID-CREDENTIALSunauthenticatedВход не выполнен. Этот же код относится к неизвестному адресу электронной почты, неверному паролю, учётной записи, заблокированной после многих неудачных попыток, отключённому пользователю и приостановленной компании, поэтому ответ не раскрывает, какие учётные записи существуют. Также возвращается при смене пароля, если текущий пароль неверен.Проверьте адрес электронной почты и пароль. После auth.lockout.max_failures неудачных попыток для этой учётной записи на auth.lockout.lockout_secs блокируется сеть (время удваивается при каждой последующей блокировке подряд; W4-AUTH-01: блокировка действует на клиентскую сеть, с которой пришли неудачные попытки, — адрес IPv4 или IPv6 /64, поэтому владелец по-прежнему может войти с другого места). Подождите, используйте другую сеть или попросите администратора снять блокировку (POST /api/v1/users/{id}/unlock или mpbx user unlock <company> <e-mail> на сервере). Вместо кода TOTP принимается код восстановления (recovery_code); неверный или уже использованный код отвечает MPBX-AUTH-TOTP-INVALID.
MPBX-AUTH-TOKEN-INVALIDunauthenticatedТокен доступа отсутствует, искажён, не EdDSA, подписан неизвестным или выведенным из обращения ключом (например, токеном другой установки или токеном старше периода перехода после ротации ключа), имеет неверную подпись либо неверного издателя или аудиторию.Войдите снова. Службы, которые проверяют токены, должны загружать текущий набор JWK установки.
MPBX-AUTH-TOKEN-EXPIREDunauthenticatedСрок действия токена доступа истёк (или он ещё не действителен).Используйте токен обновления, чтобы получить новый токен доступа. Если это происходит сразу после входа, проверьте часы (auth.clock_leeway_secs).
MPBX-AUTH-TOKEN-REVOKEDunauthenticatedТокен доступа или его сессия отозваны (выход, смена пароля, повторное использование токена обновления, действие администратора).Войдите снова.
MPBX-AUTH-REFRESH-INVALIDunauthenticatedТокен обновления искажён, неизвестен, просрочен (не использовался дольше auth.refresh_idle_ttl_secs или сессия старше auth.session_max_age_secs), его сессия завершена либо пользователь или компания отключены.Войдите снова.
MPBX-AUTH-REFRESH-REUSEDunauthenticatedТокен обновления, который уже был обменян, предъявлен повторно — после окна допуска (auth.refresh_reuse_grace_secs, 20 с) или когда он старше непосредственно предыдущего токена. Это значит, что одна и та же сессия есть у двух сторон (украденный токен или клиент, отправивший одно обновление дважды), поэтому вся сессия отозвана, а её токены доступа помещены в список запрещённых. Внутри окна допуска предыдущий токен возвращает уже выданную пару.Войдите снова. Клиенты должны выполнять обновления последовательно (одно в полёте на сессию) и всегда сохранять самый новый токен обновления. Если ошибка повторяется, проверьте устройство.
MPBX-AUTH-PASSWORD-POLICYinvalid_argumentНовый пароль нарушает политику паролей. Сообщение перечисляет нарушенные правила по ключам: too_short, too_long, too_few_character_classes, invalid_characters, common, contains_user_info, repetitive.Выберите другой пароль; проще всего использовать фразу из нескольких слов.
MPBX-AUTH-KEY-INVALIDconfigКлючевой материал JWT отсутствует или неверен: MPBX_JWT_SIGNING_KEY, MPBX_JWT_PUBLIC_KEY или MPBX_JWT_KID не заданы или некорректны, открытый ключ не принадлежит ключу подписи, ключ слабый или запись MPBX_JWT_PREVIOUS_KEYS некорректна. Сообщение называет переменную, но никогда не её значение.Восстановите секреты установки из резервной копии или создайте их командой mpbx init на новой установке.
MPBX-AUTH-CONFIG-INVALIDconfigЗначение в разделе конфигурации [auth] вне допустимого диапазона (сообщение называет его и допустимый диапазон).Исправьте mpbx.toml или переменную окружения MPBX__AUTH__*.
MPBX-AUTH-HASHinternalХеширование пароля или генератор случайных чисел операционной системы завершились ошибкой.Проверьте хост (память для argon2, источник энтропии) и сообщите об ошибке вместе со строкой журнала.
MPBX-AUTH-REVOCATION-UNAVAILABLEunavailableValkey не удалось прочитать для проверки списка запрещённых токенов. Запросы завершаются отказом, а не принимают возможно отозванный токен. Можно повторить.Проверьте работоспособность Valkey.
MPBX-AUTH-PRINCIPAL-INACTIVEunauthenticatedТокен доступа или ключ API действительны, но его пользователь отключён или удалён либо компания приостановлена. Проверяется при каждом запросе, поэтому отключение пользователя сразу прекращает его доступ.Попросите администратора включить учётную запись или компанию снова.
MPBX-APIKEY-INVALIDunauthenticatedКлюч API неизвестен в указанной в нём компании, отозван, истёк или его секрет неверен. Один код для всех случаев, чтобы проверка не давала никаких сведений. Ключ, в части компании которого внесены изменения, также отклоняется здесь: ключ ищется только внутри компании, названной в строке.Создайте новый ключ (Администрирование, Ключи API) и замените старый везде.
MPBX-KIOSK-INVALIDunauthenticatedТокен киоска табло (X-Kiosk-Token) отсутствует, неизвестен, отозван или истёк. Один код для всех случаев. Отзыв действует с следующего запроса.Создайте новую ссылку киоска (Администрирование, Маршрутизация очередей, Киоски табло).
MPBX-RBAC-FORBIDDENpermission_deniedВызывающий не имеет разрешения, которое нужно операции (область, названная в документе OpenAPI), либо имеет его только для других отделов, чем отдел ресурса. Сообщение называет разрешение.Попросите администратора назначить роль, которая его предоставляет; GET /api/v1/me показывает, что вы имеете и где.
MPBX-RBAC-ESCALATIONpermission_deniedНазначение роли, создание пользовательской роли или выбор областей ключа API выдали бы разрешение, которым вызывающий не обладает для этой области (компания или отдел). Никто не может выдать больше, чем имеет сам.Попросите того, кто имеет это разрешение там (обычно Владельца), сделать это.
MPBX-RBAC-UNKNOWN-PERMISSIONinvalid_argumentКлюча разрешения нет в каталоге либо это системное разрешение, использованное в роли компании или ключе API.Используйте ключи, перечисленные в руководстве по RBAC.
MPBX-RBAC-BUILTIN-READONLYconflictВстроенные роли (Пользователь, Администратор приёмной, Супервайзер, Администратор отдела, Менеджер, Владелец) нельзя переименовать, изменить или удалить.Создайте пользовательскую роль с нужными разрешениями.
MPBX-RBAC-LAST-OWNERconflictИзменение оставило бы компанию без Владельца на уровне всей компании или установку без Владельца системы.Сначала передайте роль другому пользователю.
MPBX-RBAC-NOT-FOUNDnot_foundРоли, назначения ролей или отдела нет в этой компании (идентификаторы другой компании ведут себя как отсутствующие).Проверьте идентификатор; список ролей компании доступен через API ролей.
MPBX-RBAC-SYSTEM-ROLE-REQUIREDpermission_deniedТокен уровня системы (или запрос его получить) для пользователя, который не имеет роли Администратора системы или Владельца системы, например после отзыва роли.Войдите снова с токеном компании или попросите Владельца системы выдать роль.
MPBX-ACCOUNT-SYSTEMpermission_deniedСубъект, который не имеет более высокого ранга, чем учётная запись с системной ролью (Владелец системы или Администратор системы), попытался изменить её: поля, статус, удаление, пароль, 2FA, блокировку, назначение ролей, системные роли, внутренний номер или ключи API. Владелец системы > Администратор системы > нет роли; другого Владельца системы меняет только Владелец системы; субъект компании или ключ API не имеет системного ранга (W1-SEC-01-M1, rbac.md).Обратитесь к Владельцу системы.
MPBX-AUTH-TOTP-REQUIREDunauthenticatedАдрес электронной почты и пароль верны, но для учётной записи включена двухфакторная аутентификация TOTP, а вход не содержал totp_code.Попросите пользователя ввести 6-значный код из приложения-аутентификатора и повторите вход с тем же адресом и паролем плюс totp_code.
MPBX-AUTH-TOTP-INVALIDunauthenticatedtotp_code (или recovery_code) неверен, относится к другому временному окну (допускается отклонение на один шаг в 30 секунд), уже был использован однократно либо второй фактор учётной записи заблокирован после auth.lockout.max_failures неверных кодов в окне с любой сети (замечание к PR #109: бюджет на всю учётную запись; тогда код не проверяется и код восстановления не расходуется). Считается неудачным входом для блокировки сети, как и неверный пароль.Введите текущий код; проверьте часы телефона. После повторных неверных кодов подождите auth.lockout.lockout_secs (время удваивается при каждой блокировке подряд) или попросите администратора снять блокировки входа.
MPBX-AUTH-TOTP-CODE-MISMATCHinvalid_argumentPOST /api/v1/auth/totp/verify: код не совпадает с ожидающим секретом. TOTP остаётся выключенным, пока код не совпадёт. Также ответ на первый код при регистрации входа и на выключение TOTP, когда код неверен или второй фактор учётной записи заблокирован (тот же бюджет на всю учётную запись, что и у MPBX-AUTH-TOTP-INVALID).Повторно отсканируйте секрет из POST /api/v1/auth/totp/enroll и отправьте текущий код.
MPBX-AUTH-TOTP-ALREADY-ENABLEDconflictЗапрошена регистрация, хотя TOTP уже включён для учётной записи. Действующий второй фактор никогда не заменяется молча.Администратор сначала сбрасывает фактор (управление пользователями), затем регистрация выполняется снова.
MPBX-AUTH-TOTP-NOT-ENROLLEDconflictPOST /api/v1/auth/totp/verify без ожидающей регистрации (никогда не регистрировалась или уже подтверждена), либо регистрация для учётной записи без локального пароля.Сначала вызовите POST /api/v1/auth/totp/enroll.
MPBX-AUTH-TOTP-UNAVAILABLEunavailableНа сервере нет хранилища секретов (MPBX_MASTER_KEY не загружен), поэтому секреты TOTP нельзя ни зашифровать, ни открыть. Вход в учётную запись с включённым TOTP завершается отказом с этим кодом.Запустите сервер с секретами установки из mpbx init.
MPBX-AUTH-BUSYunavailableВсе слоты хеширования паролей были заняты 2 секунды, поэтому пароль не проверялся (HTTP 503 с Retry-After). Argon2 расходует около 19 МиБ и один процессор на проверку, поэтому сервер выполняет не более двух проверок на процессор одновременно; это ограничение на работу хеширования без аутентификации во время наплыва входов. Ничего в учётной записи не проверялось и не менялось; сбой не учитывается в блокировке. Можно повторить.Повторите попытку через некоторое время. Если это происходит без наплыва запросов, посмотрите предупреждения MPBX-AUTH-BUSY в журнале и загрузку процессора хоста.
MPBX-AUTH-TOTP-ENROLMENT-REQUIREDunauthenticatedПароль верен, но политика двухфакторной аутентификации компании распространяется на учётную запись (/api/v1/two-factor-policy: на всех или на одну из её ролей), а аутентификатора у неё ещё нет. Сессия не открыта; ничего не регистрируется молча.Объясните пользователю политику, вызовите POST /api/v1/auth/totp/enrolment с тем же адресом и паролем, чтобы получить секрет (QR-код), затем войдите с первым кодом (totp_code): это подтверждает аутентификатор и один раз возвращает коды восстановления.
MPBX-AUTH-TOTP-ENROLMENT-NOT-REQUIREDconflictPOST /api/v1/auth/totp/enrolment для учётной записи, на которую политика не распространяется (она всё же может зарегистрироваться после входа).Войдите, затем зарегистрируйтесь в разделе «Безопасность учётной записи».
MPBX-AUTH-TOTP-ENROLMENT-CODE-INVALIDunauthenticatedPOST /api/v1/auth/totp/enrolment без одноразового кода, отправленного по почте командой POST /api/v1/auth/totp/enrolment/code, либо с кодом, который неверен, просрочен (10 минут), уже использован, заменён более новым, сожжён после 5 неверных попыток или отправлен на адрес, которого у учётной записи больше нет (FU-AUTH01-L3). Неверный код также учитывается в блокировке входа.Запросите новый код (POST /api/v1/auth/totp/enrolment/code) и введите тот, что пришёл в самом новом письме.
MPBX-AUTH-TOTP-ENROLMENT-CODE-THROTTLEDconflict (HTTP 429)POST /api/v1/auth/totp/enrolment/code вызван менее чем через минуту после последнего кода либо после 5 кодов для учётной записи (или её адреса) или 20 кодов из клиентской сети за час. Задано Retry-After.Подождите, затем используйте самый новый код, уже находящийся в почтовом ящике.
MPBX-AUTH-TOTP-ENROLMENT-MAIL-UNAVAILABLEunavailableКод регистрации нельзя отправить по электронной почте: у компании нет провайдера электронной почты (а у установки нет [email.smtp]), либо провайдер отклонил письмо. Код аннулирован; ничего не зарегистрировано.Настройте провайдера электронной почты (Настройки, Электронная почта) или администратор снимает политику двухфакторной аутентификации с учётной записи, пока её не настроят.
MPBX-AUTH-TOTP-POLICYconflictPOST /api/v1/auth/totp/disable для учётной записи, на которую распространяется политика двухфакторной аутентификации компании.Попросите администратора изменить политику или сбросить фактор (POST /api/v1/users/{id}/two-factor-reset).
MPBX-AUTH-REAUTH-FAILEDpermission_deniedЧувствительное изменение собственной учётной записи требует текущий пароль (регистрация и удаление TOTP, новые коды восстановления, сброс собственного пароля через маршруты пользователя), и он был неверен либо вход из этой сети заблокирован. Учитывается в блокировке как неверный вход. HTTP 403, чтобы клиент не принял это за истёкшую сессию.Введите текущий пароль.
MPBX-AUTH-INVITE-INVALIDunauthenticatedСсылка-приглашение неизвестна, просрочена, уже использована, заменена более новым приглашением либо учётная запись отключена или уже имеет пароль. Один код для всех случаев, поэтому ответ ничего не раскрывает.Попросите администратора отправить новое приглашение (POST /api/v1/users/{id}/invitation).
MPBX-AUTH-INVITE-ONBOARDEDconflictПриглашение запрошено для учётной записи, которая уже имеет пароль.Вместо этого используйте сброс пароля.
MPBX-AUTH-INVITE-HOSTconflictPOST /api/v1/users/{id}/invitation отправлено на веб-адрес, который не принадлежит компании (в режиме нескольких компаний — адрес другой компании или адрес установки для компании, которая не является компанией по умолчанию). Ссылка в письме строится из этого адреса, поэтому она не привела бы в компанию.Отправьте приглашение с собственного веб-адреса компании (<company>.<pbx domain>). За прокси или под другим публичным именем отправляйте приглашение с публичного имени, которое открывают пользователи, и сохраняйте исходный Host (см. руководство по аутентификации, FU-AUTH01-L5).

Первоначальная настройка и повышение доступа (W4-WEB-06)​

Возвращаются маршрутами настройки (/api/v1/setup/*) и POST /api/v1/auth/elevate. Руководство: мастер первоначальной настройки.

КодТипЗначениеЧто делать
MPBX-SETUP-TOKEN-INVALIDunauthenticatedТокен в ссылке настройки неверен или неполон либо у этой установки нет токена настройки (MPBX_SETUP_TOKEN_SHA256 не задан или некорректен). Один код для всех случаев, поэтому проверка ничего не раскрывает. Отклонённые попытки ограничиваются по клиентской сети и записываются в журнал аудита установки (setup.refused).Используйте самую новую ссылку, которую напечатал установщик. Выпустите новую командой mpbx-ctl setup-url (виртуальная машина) или удалив значения MPBX_SETUP_TOKEN_* и повторно выполнив mpbx init (Compose, Kubernetes); старая ссылка перестанет работать.
MPBX-SETUP-TOKEN-EXPIREDunauthenticatedТокен верен, но истёк срок MPBX_SETUP_TOKEN_EXPIRES_AT (по умолчанию через 24 часа после mpbx init).Выпустите новую ссылку, как описано выше.
MPBX-SETUP-COMPLETEconflictПервый Владелец системы уже существует: настройка завершена по ссылке (токен израсходован) или в базе данных уже есть Владелец системы (восстановление, заранее заполненная установка). Маршруты токена настройки никогда не создают другого владельца, какие бы секреты установки ни были сохранены. Также ответ на подписанные шаги настройки после завершения мастера.Войдите как обычно. Чтобы добавить администраторов, Владелец системы выдаёт роли в консоли.
MPBX-SETUP-OWNER-PENDINGconflictВладелец системы уже создан по ссылке и ожидает кода аутентификатора.Завершите подтверждение (POST /api/v1/setup/owner/confirm), получите новый QR-код (POST /api/v1/setup/owner/totp) или начните заново (POST /api/v1/setup/owner/reset).
MPBX-SETUP-NO-OWNER-PENDINGconflictПопытка подтвердить, перезапустить или сбросить владельца, когда никто не ожидает подтверждения.Сначала создайте владельца (POST /api/v1/setup/owner).
MPBX-SETUP-CREDENTIALS-INVALIDunauthenticatedАдрес электронной почты или пароль не совпадают с Владельцем системы, созданным по ссылке. Неверный пароль учитывается в блокировке входа для этой учётной записи.Введите адрес электронной почты и пароль, выбранные на первом шаге, или начните заново.
MPBX-AUTH-STEP-UP-UNAVAILABLEconflictPOST /api/v1/auth/elevate: доступ уровня всей установки подтверждается кодом аутентификатора учётной записи, а у этой учётной записи нет подтверждённого аутентификатора.Настройте двухфакторный вход в разделе «Безопасность учётной записи», затем повторите попытку.