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

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

1.0 Junior🔥 241 комментариев
#Безопасность

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

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

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

Аутентификация vs Авторизация

Аутентификация — это проверка, кто ты (identity). Авторизация — это проверка, что ты можешь делать (permissions).

Простое объяснение

Аутентификация: "Докажи, что ты — John Smith"
↓
Ты вводишь username и пароль
↓
Система проверяет в БД и говорит: "OK, ты действительно John"

Авторизация: "Теперь, что John может делать?"
↓
Система смотрит роли/permissions: admin, manager, user
↓
Система говорит: "John может удалять пользователей"

На примере входа на сайт

// АУТЕНТИФИКАЦИЯ: проверка пароля
if (password_verify($input_password, $user->password_hash)) {
    // Пользователь прошёл аутентификацию
    session_start();
    $_SESSION['user_id'] = $user->id;
}

// АВТОРИЗАЦИЯ: проверка прав
if ($user->hasRole('admin')) {
    // Пользователь авторизован для admin панели
    redirect('/admin');
} else {
    // У пользователя нет прав
    redirect('/access-denied');
}

Процесс

  1. Аутентификация (сначала!)

    • Проверяем пароль/token
    • Если OK → пользователь идентифицирован
    • Если нет → 401 Unauthorized
  2. Авторизация (потом!)

    • Проверяем permissions/roles
    • Если OK → доступ разрешён
    • Если нет → 403 Forbidden

Методы аутентификации

  • Логин + пароль
  • OAuth 2.0
  • JWT токены
  • Session cookies
  • API ключи
  • Two-Factor Authentication (2FA)

Методы авторизации

  • Role-Based Access Control (RBAC)
  • Attribute-Based Access Control (ABAC)
  • Access Control Lists (ACL)
  • Permissions

HTTP коды

401 Unauthorized — не аутентифицирован (кто ты?)
403 Forbidden — аутентифицирован, но нет прав (что ты можешь?)

Пример в Laravel

// АУТЕНТИФИКАЦИЯ
Auth::attempt(['email' => $email, 'password' => $password]);
// Проверяет пароль, создаёт session

// АВТОРИЗАЦИЯ
if (Auth::check()) {  // Аутентифицирован?
    if (Auth::user()->hasRole('admin')) {  // Авторизован?
        // Разрешить доступ
    }
}

// Или в middleware
Route::post('/admin', function() {}
    ->middleware('auth')  // Аутентификация
    ->middleware('role:admin');  // Авторизация

Вывод

Аутентификация — это вход (кто ты). Авторизация — это права (что ты можешь). Сначала идентифицируешь пользователя, потом проверяешь его permissions.