4

Сессии, JWT, Access, Refresh

Серия Записки вкатуна

Статья представляет собой конспект из нескольких источников. Если у вас есть дополнения/поправки или замечания, пишите о них в комментариях.

Основные понятия

Регистрация

Клиент отправляет данные для входа на сервер. Сервер создает аккаунт и часто сразу проводит аутентификацию (в большинстве случаев).

Регистрация

Регистрация

Аутентификация

Процесс, в результате которого сервер узнает, кто вы такой. Клиент отправляет данные для входа, сервер проверяет их валидность. Если данные верны, сервер создает токен или идентификатор и отправляет его клиенту.

Аутентификация

Аутентификация

Авторизация

Процесс, в результате которого сервер узнает, что вы можете делать, а что нет. Сервер выполняет авторизацию каждый раз, когда пользователь производит серверную операцию. Например, при отправке DELETE-запроса сервер проверяет токен и возвращает разрешение или отказ.

Авторизация

Авторизация

Логинизация

Логика на клиенте, которая отрабатывает в зависимости от успешности аутентификации. Например, флаг isAuthenticated меняется с false на true, и вместо кнопки "Войти" отображается иконка профиля.

Логинизация

Логинизация

Сессионная аутентификация (Session-based)

Как это работает:

  1. Аутентификация: Клиент отправляет данные для входа, сервер проверяет их и создает сессию. Сервер возвращает клиенту UUID сессии, который хранится в куках.

  2. Авторизация: Клиент отправляет куки на сервер, сервер проверяет валидность сессии и возвращает положительный ответ.

Плюсы:

  • Безопасность: сессии хранятся на сервере.

Минусы:

  • Bottleneck (подробнее): При большом количестве пользователей нагрузка на сервер увеличивается.

Аутентификация

Аутентификация

Авторизация

Авторизация

Аутентификация на основе токенов (Token-based)

Как это работает:

  1. Аутентификация: Клиент отправляет данные для входа, сервер проверяет их и создает токен (например, JWT), который отправляется клиенту.

  2. Авторизация: При каждом запросе клиент отправляет токен в заголовке Bearer <token>. Сервер проверяет токен и возвращает положительный ответ.

Плюсы:

  • Нет необходимости хранить данные на сервере, что предотвращает bottleneck.

Минусы:

  • Менее безопасен, так как токен хранится на клиенте.

Перейдем на уровень ниже.

JWT токен

JWT (JSON Web Token) — это строка в формате base64, которая состоит из трех частей:

  1. Header (Заголовок)
    Содержит информацию о типе токена (JWT) и алгоритме шифрования.

  2. Payload (Полезная нагрузка)
    Содержит утверждения (claims) — данные о пользователе, сроке действия токена и т.д.

  3. Signature (Подпись)
    Хэш токена, созданный на основе алгоритма из заголовка и зашифрованный с помощью приватного ключа.

Пример токена

Пример токена

Важно: Не храните в токене пароли или другую важную информацию, так как токен можно раскодировать.

Access Token и Refresh Token

Access Token

Access Token — это токен, который клиент использует для доступа к защищённым ресурсам на сервере. Обычно он имеет короткий срок жизни.

Refresh Token

Refresh Token — это токен, который используется для получения нового Access Token, когда текущий Access Token истекает. Обычно он имеет длительный срок жизни.

Как работает:

  1. После успешной аутентификации сервер создает и отправляет клиенту Access Token и Refresh Token.

  2. Клиент сохраняет Refresh Token в безопасном месте (например, в HTTP-only куках).

  3. Когда Access Token истекает, клиент отправляет Refresh Token на сервер для получения нового Access Token.

  4. Сервер проверяет Refresh Token и, если он действителен, выдаёт новый Access Token.

Источники:
Аутентификация в ASP.NET Core — YouTube
Аутентификация. Сессии и JWT — YouTube
Что такое JWT, Access и Refresh токены — YouTube

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества