BFF и авторизация - где проверять доступ 🤨

BFF (Backend For Frontend, по-русски часто говорят «бэкенд для фронта») - это отдельный серверный слой между браузером/приложением и вашими внутренними сервисами. Фронт ходит в основном в него, а он уже собирает данные, режет лишнее и дёргает бэкенды.

Частый спор в командах: «Где проверять доступ - в BFF или в доменных сервисах?» 🧐

Обычно спорят так, будто нужно выбрать что-то одно. А потом ловят баги прав доступа в проде.

Я для себя это разложил так.

Сначала два разных шага, их часто путают.

Аутентификация - мы отвечаем на вопрос «кто это»: токен/сессия валидны, пользователь действительно тот, за кого себя выдаёт.

Авторизация - уже после этого отвечаем «ему можно или нельзя»: этот пользователь может открыть этот ресурс, выполнить это действие, увидеть эти поля.

❗️ BFF должен делать первичную проверку контекста: роль, организация, канал, базовые ограничения. ❗️ Доменный сервис должен делать финальную проверку бизнес-прав: можно ли именно это действие именно в этом состоянии. ❗️ Если проверка только в BFF, сервисы становятся небезопасными при прямом вызове. ❗️ Если проверка только внизу, BFF легко протаскивает лишние запросы и лишние поля, потому что «он же просто пересылает».

То есть не «или/или», а два контура. Один отсекает лишнее на входе, второй защищает саму бизнес-логику.

Вы в своих API точно знаете, какая проверка где живёт - или это пока «по привычке и договорённости в голове»?

BFF и авторизация - где проверять доступ 🤨 | Сетка — социальная сеть от hh.ru