Разница между аутентификацией и авторизацией

Разница между аутентификацией и авторизацией

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 и т.д.


Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page