← Назад к вопросам

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

1.0 Junior🔥 141 комментариев
#Архитектура систем

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

Это фундаментальные концепции безопасности, которые часто путают. Я объясню разницу.

Определения

Аутентификация (Authentication) — это проверка, что вы действительно тем, кем вы себя выдаёте. Вопрос: "Ты кто?"

Авторизация (Authorization) — это проверка, имеете ли вы права доступа к ресурсу. Вопрос: "Ты можешь это делать?"

Простой пример

Аэропорт:

  • Аутентификация: Вы показываете паспорт. Сотрудник проверяет: "Да, ты действительно Иван"
  • Авторизация: Вы показываете билет. "У тебя VIP билет? Ты можешь в VIP лаунж"

Gmail:

  • Аутентификация: Вводите email и пароль. Google проверяет пароль.
  • Авторизация: После входа. Вы видите своё письмо, но не видите письма друга.

Таблица сравнения

ПараметрАутентификацияАвторизация
ВопросТы кто?Что ты можешь?
ПроверкаЛичностьПрава доступа
ПримерыПароль, 2FA, OAuthРоли, permissions
КогдаВ начале (login)После аутентификации
Если не пройденоДоступ запрещенНекоторые действия запрещены

Аутентификация

Способы аутентификации:

1. Пароль Самый старый способ, но уязвим к взломам.

2. Multi-Factor Authentication (MFA) Пароль + SMS код на телефон. Более безопасно.

3. OAuth (Social Login) Login with Google / Facebook. Удобно, не нужно помнить пароль.

4. API Token

Authorization: Bearer abc123xyz

Для интеграций между системами.

5. JWT (JSON Web Token) Современный способ для веб-приложений.

6. Биометрия Отпечаток пальца, Face ID. На мобильных устройствах.

Авторизация

Способы авторизации:

1. Roles-Based Access Control (RBAC) Пользователь имеет роль, роль имеет permissions:

  • Admin: Create, Read, Update, Delete
  • User: Read only
  • Guest: Read only (public data)

2. Attributes-Based Access Control (ABAC) Разрешить доступ если несколько условий:

  • User.role == Manager
  • AND Document.department == User.department
  • AND Document.confidential == false

3. ACL (Access Control List) Для каждого ресурса определить, кто может что:

  • /documents/secret.pdf
    • Owner (Ivan): Read, Write, Delete
    • User (Maria): Read only
    • Group (HR): Read, Write

Практический пример

Социальная сеть

Ivan заходит на сайт:

  1. Аутентификация: Вводит email и пароль
  2. Система проверяет → пароль верен
  3. Система выдаёт JWT token
  4. Ivan аутентифицирован

Ivan смотрит профиль Maria:

  1. Авторизация: Система проверяет права
  2. "Они друзья?" → Нет
  3. "Is profile public?" → Нет
  4. Авторизация не пройдена → "Profile is private"

Ivan отправляет сообщение Maria:

  1. Авторизация: Система проверяет
  2. "Ivan может отправлять сообщения?" → Да
  3. "Maria разрешила получать сообщения?" → Да
  4. Авторизация пройдена → сообщение отправляется

Когда что проверять

Аутентификация: В начале

  1. User приходит на сайт
  2. Система: "Ты кто?" → Аутентификация
  3. Если не аутентифицирован → Редирект на login

Авторизация: После аутентификации

  1. User прошёл аутентификацию
  2. User запрашивает ресурс
  3. Система: "У тебя есть права?" → Авторизация
  4. Если нет → Error 403 Forbidden

Типичные ошибки

  • Путаница в терминах: "Добавим аутентификацию для админа" (должно быть авторизация)
  • Только аутентификация: Юзер A может видеть все данные юзера B
  • Хранение пароля в открытом виде: Нужно хешировать (bcrypt, Argon2)
  • Забыли о logout: Сессия должна завершиться при закрытии браузера

Вывод

  • Аутентификация = Проверяем личность (login)
  • Авторизация = Проверяем права (permissions)
  • Оба нужны для безопасности
  • Сначала аутентификация, потом авторизация

Как BA, я в требованиях всегда спрашиваю:

  • Как пользователи будут логиниться?
  • Какие роли и permissions?
  • Какие данные может видеть каждая роль?