Знание: почему 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/пароли/ключи)