Ответ
Это два фундаментальных, но часто путаемых понятия в безопасности. Их различие проще всего запомнить по аналогии:
-
Аутентификация (Authentication) — это процесс проверки личности. Система отвечает на вопрос: "Кто вы?".
- Результат: Успех или неудача.
- Примеры: Ввод логина и пароля, проверка по биометрии, использование API-ключа.
- Типичная ошибка:
401 Unauthorized
. Означает "Вы не вошли в систему" или "Ваши учетные данные неверны".
-
Авторизация (Authorization) — это процесс проверки прав доступа к ресурсу. Система отвечает на вопрос: "Что вам разрешено делать?". Этот шаг происходит после успешной аутентификации.
- Результат: Доступ разрешен или запрещен.
- Примеры: Проверка, может ли обычный пользователь удалить чужой комментарий или имеет ли он доступ к панели администратора.
- Типичная ошибка:
403 Forbidden
. Означает "Я знаю, кто вы, но вам сюда нельзя".
Псевдокод для веб-сервера:
def get_sensitive_data(request):
# 1. Аутентификация: кто этот пользователь?
user = authenticate(request.headers.get('token'))
if not user:
return Response(status=401, body="Authentication failed") # Вы не вошли
# 2. Авторизация: есть ли у него права?
if not user.has_permission('view_sensitive_data'):
return Response(status=403, body="Permission denied") # Вам сюда нельзя
# Успех
return Response(status=200, body=get_data())