На уровне транспорта/middleware (JWT → context.user), в resolvers/field directives (@auth), иногда в бизнес-сервисах; важно проверять и поле, и объект (IDOR).
Разбор
- Недостаточно «закрыть» только Query type.
- Проверяйте доступ к каждой чувствительной mutation/field.
- Маскируйте существование ресурсов единообразно.
- Тестируйте auth отдельно.
Итог
Auth = context + проверки на полях/объектах, не только логин на входе.