Перейти к содержанию

Знание: почему Basic Auth на /bookings отдавал 500 «Authentication error»

Связанные документы: - Действие: [[docs/14_действия/действие_fix_basic_auth_bookings]] - Изменение: [[docs/16_изменения/изменение_fix_basic_auth_bookings]] - Результат: [[docs/15_результаты/результат_fix_basic_auth_bookings]]

Наблюдение

GET /bookings/ использует dependency get_current_user. Если приходит заголовок Authorization: Basic ... и нет Bearer-токена, вызывается authenticate_with_basic().

Ранее в authenticate_with_basic() был catch-all except Exception, который превращал любые ошибки (в т.ч. ошибки Supabase/PostgREST) в HTTP 500 с detail="Authentication error".

Почему это плохо

  • 500 выглядит как падение сервера, хотя причина часто — проблемы доступа к Supabase (ключ, RLS, сеть).
  • Клиент не получает корректный сигнал авторизации (401 + WWW-Authenticate).

Правило

Для аутентификации: - «неверные креды» → 401 (+ WWW-Authenticate: Basic или Bearer) - «аутентификационный backend недоступен / ошибка интеграции» → 503 - не логировать секреты (полные JWT/пароли/ключи)