Блок 5 · Урок 2 из 4

Вход: кто ты, что тебе можно и как это помнят

Разница аутентификации и авторизации — и как приложение помнит, что вы вошли: сессии, токены, куки.

≈ 8 минут 🔐 аутентификация, авторизация 🎯 цель: различать «кто ты» и «что тебе можно» — и понимать, почему это разные вещи

Зачем это вам

Когда агент говорит «добавлю аутентификацию» или «проверь авторизацию» — это не синонимы, это два разных слоя защиты. Путать их опасно: можно проверить, что человек вошёл, но забыть проверить, что ему вообще это разрешено — так утекают чужие данные и появляются дыры. Понимать разницу между authn и authz, знать что такое JWT-токен, сессия и кука — значит ставить агенту правильные задачи и замечать, когда что-то сделано не так.

Два слоя защиты

«Кто ты» и «что тебе можно» — это разные вопросы

Любое приложение с личными кабинетами решает два вопроса подряд. Первый — подтвердить, что вы тот, за кого себя выдаёте. Второй — решить, что именно вам разрешено делать.

Аутентификация (authentication, сокращённо authn — «кто ты») — подтверждение личности. Вы вводите логин и пароль, получаете код из СМС или нажимаете «Войти через Google». Система убеждается: да, это действительно вы.2

Авторизация (authorization, сокращённо authz — «что тебе можно») — проверка прав после того, как личность уже подтверждена. Можно ли вам открыть страницу администратора? Удалить чужой заказ? Увидеть чужой профиль? Это уже другой вопрос.3

📌 Частая дыра: проверили вход, забыли проверить права. Агент добавил вход (authn) — но не добавил проверку, что конкретному пользователю это действие разрешено (authz). Если видите «добавлю аутентификацию» — уточните: «а права тоже проверяешь?»

Как приложение помнит, что вы вошли

HTTP — протокол «без памяти» (stateless, как обсуждали в блоке 1): каждый запрос независим, сервер не помнит предыдущего. Чтобы не просить пароль на каждой странице, после входа выдают «пропуск».

Кука (cookie) — маленький кусочек данных, который браузер хранит у себя и автоматически отправляет серверу при каждом запросе на этот сайт. Вы не делаете ничего специально — браузер делает это сам.1

Сессия (session) — сервер помнит ваш вход на своей стороне. Пользователю выдаётся идентификатор сессии (обычно кладётся в куку) — короткая строка вроде «пропуска с номером». Сервер по этому номеру находит ваши данные у себя.

Токен / JWT (JSON Web Token, произносится «джот») — подписанный «пропуск», в котором уже зашита информация о пользователе. Сервер не хранит его у себя — он просто проверяет подпись при каждом запросе и доверяет тому, что написано внутри. JWT часто хранят в куке или в локальном хранилище браузера.

📌 «Сессия истекла» — значит, пропуск просрочен. Нужно войти заново и получить новый.

Аналогия, которую можно пересказать

Клуб: фейс-контроль и браслет

Фейс-контроль проверяет паспорт— аутентификация: кто ты
Цвет браслета: обычный / VIP— авторизация: что тебе можно
Браслет на руке— токен / сессия / кука: пропуск, который показываешь вместо паспорта
Браслет просрочен — на вход— сессия истекла: нужно войти заново
Браслет выдали, но в VIP не пустили— вошёл ≠ всё разрешено (authn ≠ authz)

Фейс-контроль проверяет только то, что вы — это вы. Что именно вам можно — решает цвет браслета. Это два отдельных момента, и пропустить второй легко.

Запомните одно

Войти — не значит, что можно всё

Аутентификация говорит «это точно Юрий». Авторизация говорит «Юрию это разрешено». Самая частая дыра в веб-приложениях — первое проверили, второе забыли. Токен, сессия и кука — это просто способ не просить пароль при каждом клике: браузер хранит «пропуск» и показывает его серверу автоматически.

Что это даёт на практике

Фраза агента → что он имеет в виду

«Добавлю аутентификацию»
Сделаю вход: форму логина, проверку пароля, подтверждение, что пользователь — это он.
«Проверь авторизацию / права»
Убедиться, что этому конкретному пользователю действительно разрешено это действие.
«Положу токен в куку»
Выдам пропуск после входа и сохраню его в браузере — чтобы не просить пароль снова.
«Сессия истекла»
Пропуск просрочен — нужно войти заново и получить новый.
«Это JWT»
Подписанный токен, в котором зашиты данные о пользователе — сервер проверяет подпись и доверяет содержимому.

Аутентификация (authentication, authn) — подтверждение личности («кто ты»).

Авторизация (authorization, authz) — проверка прав («что тебе можно»).

Кука (cookie) — данные, которые браузер хранит и шлёт серверу при каждом запросе.

Сессия (session) — сервер помнит ваш вход; обычно через идентификатор в куке.

Токен / JWT (JSON Web Token) — подписанный пропуск, предъявляемый при каждом запросе.

Проверьте себя

Четыре вопроса с мгновенной проверкой

1. Чем аутентификация отличается от авторизации?

2. Зачем нужны куки и токены после входа?

3. Что такое JWT?

4. Пользователь вошёл в аккаунт. Что обязательно проверить перед тем, как дать ему удалить чужой заказ?

Куда мы идём

Программа курса — 7 блоков