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

«В чем разница между аутентификацией и авторизацией?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аутентификация (Authentication) — это процесс проверки подлинности субъекта (пользователя, системы). Он отвечает на вопрос «Кто ты?», подтверждая личность с помощью учетных данных (логин/пароль, токен, сертификат).

Авторизация (Authorization) — это процесс проверки прав доступа уже аутентифицированного субъекта к определенным ресурсам или действиям. Он отвечает на вопрос «Что тебе разрешено делать?».

Простая аналогия:

  1. Аутентификация — это предъявление паспорта (ID-карты) на входе в здание.
  2. Авторизация — это проверка списка доступа, разрешено ли вам входить в конкретный кабинет №501.

Технический пример (Python-подобный псевдокод):

# 1. АУТЕНТИФИКАЦИЯ: Проверяем, кто это.
def authenticate(username, password):
    user = db.get_user(username)
    if user and hash(password) == user.password_hash:
        return user  # Личность подтверждена
    return None  # Доступ запрещен

# 2. АВТОРИЗАЦИЯ: Проверяем права подтвержденного пользователя.
def authorize(user, required_permission):
    # Проверяем роли или разрешения пользователя
    if required_permission in user.permissions:
        return True  # Действие разрешено
    return False  # В доступе отказано

# Использование
current_user = authenticate("alice", "secret123")
if current_user:
    if authorize(current_user, "admin_panel:write"):
        print("Доступ к панели администратора разрешен.")
    else:
        print("У вас недостаточно прав.")

Итог: Сначала система определяет кто вы (аутентификация), а затем решает, к каким ресурсам вам можно обратиться (авторизация).