BFF и авторизация - где проверять доступ 🤨
BFF (Backend For Frontend, по-русски часто говорят «бэкенд для фронта») - это отдельный серверный слой между браузером/приложением и вашими внутренними сервисами. Фронт ходит в основном в него, а он уже собирает данные, режет лишнее и дёргает бэкенды.
Частый спор в командах: «Где проверять доступ - в BFF или в доменных сервисах?» 🧐
Обычно спорят так, будто нужно выбрать что-то одно. А потом ловят баги прав доступа в проде.
Я для себя это разложил так.
Сначала два разных шага, их часто путают.
Аутентификация - мы отвечаем на вопрос «кто это»: токен/сессия валидны, пользователь действительно тот, за кого себя выдаёт.
Авторизация - уже после этого отвечаем «ему можно или нельзя»: этот пользователь может открыть этот ресурс, выполнить это действие, увидеть эти поля.
❗️ BFF должен делать первичную проверку контекста: роль, организация, канал, базовые ограничения. ❗️ Доменный сервис должен делать финальную проверку бизнес-прав: можно ли именно это действие именно в этом состоянии. ❗️ Если проверка только в BFF, сервисы становятся небезопасными при прямом вызове. ❗️ Если проверка только внизу, BFF легко протаскивает лишние запросы и лишние поля, потому что «он же просто пересылает».
То есть не «или/или», а два контура. Один отсекает лишнее на входе, второй защищает саму бизнес-логику.
Вы в своих API точно знаете, какая проверка где живёт - или это пока «по привычке и договорённости в голове»?
· 24.04
схожий вопрос был на fastapi-проекте - клиент хотел проверять права в gateway и в сервисах. в итоге: gateway проверяет аутентификацию, domain-сервисы проверяют права на конкретный ресурс. дублирование минимальное, безопасность - ок
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён