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

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

1.0 Junior🔥 221 комментариев
#Веб-тестирование#Тестирование API

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

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

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

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

В контексте информационной безопасности и контроля доступа, идентификация, аутентификация и авторизация — это три фундаментальных, последовательных процесса, которые часто объединяют под общим термином AAA (Authentication, Authorization, Accounting) или просто управление доступом. Понимание различий между ними критически важно для QA Engineer при тестировании функций безопасности, логинов, ролевых моделей и уязвимостей.

1. Идентификация (Identification)

Это первый шаг, на котором пользователь или система заявляет о своей личности, предъявляя уникальный идентификатор. Цель — ответить на вопрос: "Кто вы?".

  • Суть процесса: Пользователь сообщает системе своё "имя" (логин, email, ID карты).
  • Примеры идентификаторов:
    *   Логин (например, `john_doe`)
    *   Email-адрес (`user@example.com`)
    *   Номер учетной записи
    *   Отпечаток пальца (биометрический идентификатор)
  • Важно: Сама по себе идентификация НЕ подтверждает личность. Любой может ввести чужой логин. Это просто заявление.
# Пример на уровне кода: Пользователь отправляет идентификатор (логин)
user_claimed_identity = "alice_smith"
# На этом этапе система лишь получает строку, но не знает, действительно ли это Alice.

2. Аутентификация (Authentication)

Это процесс проверки заявленной идентичности. Он отвечает на вопрос: "Вы действительно тот, за кого себя выдаёте?". Здесь происходит подтверждение с помощью секретных данных или факторов.

  • Суть процесса: Предоставление доказательств (учетных данных), привязанных к идентификатору.
  • Типы факторов аутентификации (что вы знаете/имеете/есть):
    *   **Знание (Knowledge):** Пароль, PIN-код, секретный вопрос.
    *   **Владение (Possession):** Одноразовый код из SMS/приложения (TOTP, HOTP), аппаратный токен, смарт-карта.
    *   **Биометрия (Inherence):** Отпечаток пальца, сканирование лица, радужной оболочки.
  • Многофакторная аутентификация (MFA) использует два или более факторов из разных категорий, что значительно повышает безопасность.
# Пример: Проверка учетных данных (аутентификация)
stored_password_hash = "5f4dcc3b5aa765d61d8327deb882cf99"  # Хэш пароля "password" для пользователя "alice_smith"
user_provided_password = "password"

import hashlib
# Система хэширует введенный пароль и сравнивает с хранимым хэшем
if hashlib.md5(user_provided_password.encode()).hexdigest() == stored_password_hash:
    is_authenticated = True  # Аутентификация успешна
else:
    is_authenticated = False # Аутентификация провалена

3. Авторизация (Authorization)

Это процесс определения уровня доступа уже аутентифицированного пользователя к ресурсам системы. Отвечает на вопрос: "Что вам разрешено делать?".

  • Суть процесса: Проверка прав и разрешений на выполнение конкретных операций (чтение, запись, удаление) с определенными объектами (файлы, записи в БД, страницы).
  • Механизмы:
    *   **Ролевой доступ (RBAC):** Пользователю назначается роль (например, `Admin`, `Editor`, `Viewer`), которая содержит набор привилегий.
    *   **Правовой доступ (PBAC/ABAC):** Доступ определяется сложными политиками на основе атрибутов пользователя, ресурса и контекста (время, местоположение).
  • Результат: Разрешение или запрет на действие.
# Пример: Проверка авторизации после успешной аутентификации
user_roles = ["editor"]  # Роли, назначенные пользователю "alice_smith"
requested_action = "delete_article"
requested_resource = "news_feed"

# Правила авторизации (упрощенно)
access_rules = {
    "editor": ["read_article", "edit_article", "publish_article"],
    "admin": ["read_article", "edit_article", "publish_article", "delete_article", "manage_users"]
}

# Проверка, есть ли у пользователя право на действие
is_authorized = any(
    requested_action in access_rules.get(role, []) for role in user_roles
)

if is_authorized:
    print("Доступ разрешен. Операция выполнена.")
else:
    print("Ошибка 403: Доступ запрещен.")

Сводная таблица и важность для QA

КритерийИдентификацияАутентификацияАвторизация
ВопросКто вы?Вы действительно он?Что вам можно?
ЦельЗаявить личностьПодтвердить личностьУправлять правами
ДанныеИдентификатор (Логин)Учетные данные (Пароль, токен)Права и роли (ACL, политики)
ПоследовательностьПервый шагВторой шагТретий шаг

Для QA Engineer критически важно:

  • Тестировать каждый процесс раздельно. Например, проверить, что система не позволяет угадать логины (идентификацию), устойчива к подбору паролей (аутентификацию) и не допускает несанкционированного доступа (authorization bypass) через манипуляции с параметрами (например, изменение user_id в запросе).
  • Понимать, что успешная аутентификация не гарантирует авторизацию. Пользователь может войти в систему, но получить сообщение "У вас нет прав для просмотра этой страницы".
  • Проверять сценарии, когда идентификатор существует, но аутентификация не пройдена (неверный пароль), и наоборот.
  • Тестировать ролевые модели (RBAC) на полноту и отсутствие эскалации привилегий.

Таким образом, идентификация — это предъявление паспорта, аутентификация — проверка, что вы — владелец паспорта (например, по фото), а авторизация — определение, в какие помещения вам разрешён вход на основе вашей должности или статуса, указанного в том же паспорте или пропуске.

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