У меня есть веб-сервис, который хранит загруженные изображения на S3. Затем эти образы распространяются в CDN CloudFront и обслуживаются по подписанным URL-адресам. Т.е. только авторизованные пользователи, у которых есть подпись URL, могут получить доступ к этим изображениям
Недавно мы решили внедрить авторизацию на основе ролей (RBAC) в наших сервисах. Мы получаем токен JWT с каждым запросом из пользовательского интерфейса, анализируем его и проверяем, разрешено ли пользователю выполнять это действие, сравнивая роль пользователя с требуемым разрешением.
Хотя мы хотим, чтобы наши изображения, хранящиеся в CDN, также были доступны в зависимости от роли пользователя. Например, администратор веб-сайта может видеть все фотографии во всех сегментах CDN, менеджер может видеть фотографии сотрудников только своего магазина, а обычный пользователь может видеть только его фотографии.
Как лучше всего реализовать это, кроме использования службы в качестве медиа-шлюза, который сначала проверяет разрешения пользователя, а затем передает запрошенный файл изображения? Может быть, это можно сделать через конфигурацию CloudFront или какую-то лямбда-функцию, которая проверяет каждый запрос? А может, это нужно реализовать совсем по-другому?