Техническое задание: Настройка кросс-доменной авторизации для Django API
Суть проблемы
Существует Django-бэкенд с API, который для аутентификации использует токен, передаваемый через cookies. Фронтенд-приложение работает на другом (стороннем) домене и не может получить доступ к этому токену, из-за чего все запросы к API отклоняются.
Ключевые детали проблемы
- Токен авторизации хранится в cookie, установленном на основном домене бэкенда.
- Для cookie установлен атрибут
SameSite=Lax.
- Фронтенд размещен на отдельном домене и не имеет доступа к cookie с токеном, поэтому не может включить его в запросы к API.
- Сервер (Django) отвергает запросы без валидного токена.
- Тестирование проводилось через инструмент удаленного доступа к браузеру.
Задачи для разработчика
- Проанализировать текущую конфигурацию: Изучить настройки CORS, куки и сессий в Django-проекте.
- Настроить политику CORS: Разрешить запросы с домена фронтенд-приложения к Django API.
- Решить проблему с передачей токена: Обеспечить безопасную передачу токена авторизации с бэкенда на фронтенд и его корректное использование в последующих запросах. Возможные пути решения:
- Настройка атрибутов cookie (
SameSite, Secure, домен).
- Использование заголовков (например,
Authorization: Bearer) вместо или вместе с cookies.
- Настройка Django для обработки кросс-доменных запросов с учетными данными.
- Обеспечить безопасность: Все изменения должны соответствовать современным стандартам безопасности веб-приложений.
- Протестировать решение: Убедиться, что фронтенд может успешно аутентифицироваться и делать авторизованные запросы к API.
Требования к результату
- Фронтенд на стороннем домене должен иметь возможность получать токен авторизации.
- Авторизованные запросы с фронтенда к Django API должны успешно проходить.
- Решение должно быть документировано.