Разница между аутентификацией и авторизацией
t.me/qa_chilloutМногие путают эти два понятия, потому что часто они идут рядом. Но на самом деле это разные этапы доступа к системе. Разберёмся по порядку.
Аутентификация (authentication) — «Кто ты?»
Аутентификация — это процесс проверки личности. Система должна понять: вы — это действительно вы?
Примеры:
- Ввод логина и пароля
- Вход через Google/Apple
- Скан лица или отпечатка пальца
Если успешно — система понимает, кто перед ней.
Аналогия из жизни:
На входе в офис охранник просит ваш пропуск. Вы его показываете — он понимает, кто вы такой, и пропускает внутрь.
Как сервер «понимает», кто вы
После ввода логина и пароля или другой формы идентификации:
1. Сервер проверяет данные — сравнивает логин с базой и сверяет хэш пароля.
2. Если всё ок — возвращает токен (например, JWT или session ID).
3. При следующих запросах клиент отправляет токен в заголовке, например:
Authorization: Bearer <токен>
4. Сервер проверяет токен:
- Токен не просрочен,
- Подписан правильно (в случае JWT),
- Связан с сессией пользователя (в случае session ID).
Авторизация (authorization) — «Что тебе можно?»
Авторизация — это проверка прав и полномочий. Система уже знает, кто вы, и решает: что вам разрешено?
Примеры:
- Пользователь может читать, но не редактировать документ
- У админа есть доступ к панели управления, у обычного пользователя — нет
Если успешно — система разрешает выполнять определённые действия.
Аналогия из жизни:
Вы зашли в офис по пропуску (аутентификация), но не в каждую дверь можете войти — только в те, к которым у вас есть доступ (авторизация).
Как сервер решает, что вам можно
После того как сервер понял, кто вы (прошли аутентификацию), он:
1. Проверяет роль пользователя (например, admin, user, guest),
2. Сравнивает её с правами доступа к ресурсу,
3. При несоответствии возвращает 403 Forbidden.
В коде это может выглядеть, например, так:
if not user.has_permission('edit_document'):
return Response(status=403)
Где и как настраиваются права?
- RBAC (Role-Based Access Control) — каждому пользователю назначается роль, роли привязаны к действиям.
- ACL (Access Control Lists) — прямо указано, кто к чему имеет доступ.
- OAuth scopes — при получении токена указываются разрешения:
read:user,write:settingsи т.д.
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».