Урок 40. Введение в аутентификацию и авторизацию

📁 Блок: Auth ⏱️ Время изучения: ~70 мин 🎯 Сложность: Средняя
#authentication #authorization #drf #jwt #token #permissions #session

⚡ Кратко: аутентификация vs авторизация в DRF

Аутентификация — кто ты? (проверка учётных данных). Авторизация — что тебе можно? (проверка прав). В DRF они работают последовательно: сначала Authentication, затем Permissions.

  • SessionAuthentication — через куки/сессии; для традиционных веб-приложений
  • BasicAuthentication — логин/пароль в Base64 в каждом запросе; только с HTTPS
  • TokenAuthentication — заголовок Authorization: Token <key>; для REST/mobile
  • JWT (SimpleJWT) — самодостаточный токен; Authorization: Bearer <token>
  • IsAuthenticated — доступ только для авторизованных; 401/403 иначе

Что запомнить: BasicAuthentication небезопасен без HTTPS. TokenAuthentication требует rest_framework.authtoken в INSTALLED_APPS и миграции.

Частая ошибка: забыть добавить rest_framework.authtoken в INSTALLED_APPS и выполнить python manage.py migrate перед использованием TokenAuthentication.

📖 О чём этот урок

Урок 40 открывает блок безопасности в курсе Python Advanced. Здесь разбираются фундаментальные понятия аутентификации и авторизации в Django REST Framework, а также четыре встроенных механизма аутентификации DRF.

Аутентификация и авторизация — обязательные компоненты любого реального API. DRF предоставляет гибкую систему: классы аутентификации и разрешений можно настраивать глобально или на уровне каждого представления.

Что изучим

  • Разница между аутентификацией и авторизацией — концепции и порядок проверки
  • SessionAuthentication — куки и сессии в Django-приложениях
  • BasicAuthentication — HTTP Basic Auth с кодированием в Base64
  • TokenAuthentication — токены DRF, модель Token, получение через Postman
  • JWT-аутентификация через библиотеку Simple JWT — access/refresh токены
  • Классы разрешений: IsAuthenticated, AllowAny, IsAdminUser и другие
  • Глобальная настройка через DEFAULT_AUTHENTICATION_CLASSES / DEFAULT_PERMISSION_CLASSES

📚 Что повторить перед изучением

  • ← Урок 39: Summary session 7 — повторение DRF-блока
  • DRF: APIView, Generic Views, ViewSets — уроки 26, 29, 36
  • HTTP-заголовки, методы GET/POST, коды ответов 401/403
  • Django пользователи: модель User, create_user(), create_superuser()
  • Сессии Django: SESSION_ENGINE, механизм сессий в браузере

🎯 Что изучать дальше