Аутентификация на основе токенов
#
Васильев Андрей Михайлович, 2025
Версии презентации
Аутентификация с сохранением сессии
#
Нет строгого стандарта (например RFC) который определял бы процедуру авторизации
с помощью формы, каждый разработчик может реализовать логику самостоятельно
Ключевая задача — сформировать токен аутентификации и сохранить его в куки
Аутентификация по токенам
#
В рамках данной схемы на сервере выделяется отдельное веб-приложение,
выполняющее задачу аутентификации, а другие приложения делегируют решение задачи
первому
- Веб-приложение, обеспечивающее аутентификацию, называется identity provider
или authentication service (в случае, если происходит ещё и авторизация)
- Другие приложения в рамках данной схемы называются service provider
Запрос без корректного токена должен приводить к отказу в обслуживании
Аутентификация веб-браузера в провайдере
#
Предыдущий процесс можно реализовать в специализированных клиентах, однако при
использовании браузера процедура становится более сложной
Варианты аутентификации по токену
#
Существует множество стандартов, среди наиболее популярных: OAuth, OAuth 2.0, OpenID Connect, SAML, WS-Federation
Внутри токена содержится дополнительная информация:
- кто сгенерировал токен
- кто может быть получателем токена
- срок действия
- набор сведений об аутентифицированной сущности
При получении токена его необходимо проверить на соответствие требованиям приложения
Форматы токенов
#
Simple Web Token
#
Набор пар имя-значение в формате кодирования HTML form, описывает стандартные ключи Issuer, Audience, ExpiresOn и HMACSHA256. Токен подписывается симметричным ключом
JSON Web Token, JWT
#
Содержит три блока, разделённых точками: заголовок, набор полей и подпись. Первые два блока закодированы в JSON-формате и закодированы в base64. Подпись может быть сформирована как симметричными, так и ассиметричными алгоритмами шифрования
Security Assertion Markup Language (SAML)
#
Определяет токены в XML-формате, включающем информацию об эмитенте, субъекте, необходимые условия для проверки токена. Подпись осуществляется при помощи ассиметричной криптографии. Содержат механизм для подтверждения владения токеном
Стандарты OAuth и OpenID Connect
#
Данные стандарты предназначены в первую очередь для решения задачи по предоставлению доступа одного приложения к другому от имени пользователя
Приложению для своей работы могут потребоваться данные из другой системы:
- Список контактов данного пользователя
- Список файлов данного пользователя
- Почтовый адрес данного пользователя
В рамках стандарта OpenID Connect на основе OAuth разработан слой учётных данных, в рамках которого сервер авторизации предоставляет идентификационный токен
Большие технологические компании и государства предоставляет возможности по аутентификации с помощью данных протоколов: Госуслуги, VK, Яндекс, Сбербанк