Bearer-аутентификация
#
Васильев Андрей Михайлович, 2025
Версии презентации
Bearer-аутентификация
#
Детали работы данного формата аутентификации описаны в RFC6750
- Bearer-токен вводится как часть работы протокола OAuth 2.0
- Данный токен может быть использован для доступа к ресурсному серверу
После получения токена от сервера авторизации клиент может воспользоваться им
для выполнения запроса к ресурсному серверу
Варианты передачи Bearer-токена
#
В рамках HTTP-запроса клиент может использовать один способ передачи токена
Заголовок GET-запроса Authorization
#
Формат заголовка:
Authorization: Bearer mF_9.B5f-4.1JqM
Следом за ключевым словом Bearer
должен идти токен, закодированный в Base64
Параметр HTTP-формы access_token
#
Данный параметр должен учитываться, только если выполняется POST-запрос с
корректной кодировкой содержимого
Параметр URI-запроса access_token
#
- Не рекомендуется использовать данный подход, т.к. URI-пути активно кешируется
- Название параметра может быть использовано приложением для своих целей
- В случае использования данного метода рекомендуется установить заголовок
Cache-Control
Ответ на некорректный запрос
#
Если в переданном запросе не был передан токен или он был передан некорректно,
то HTTP-сервер должен включить заголовок WWW-Authenticate
следующего
содержимого:
Bearer <параметры аутентификации>
За ключевым словом Bearer
должен идти список атрибутов аутентификации в
формате ключ-значение, поддерживаются следующие атрибуты:
realm
— название пространства для защиты, может присутствовать 1 раз
scope
— список требований, которым должен удовлетворять запрос, содержимое
ориентировано на машинную обработку конкретного протокола
error
— код категории ошибки, рекомендуется добавить
error_description
— текст ошибки в формате, удобном для восприятии
error_uri
— ссылка на документ с описанием ошибки
Коды ошибок
#
Если пользователь корректно передал параметры аутентификации, то серверу
рекомендуется добавить код категории ошибки
Атрибуты кода ошибок могут быть следующие:
invalid_request
— запрос составлен неверно: не передан необходимый параметр,
значение параметра неверное, параметр дублируется и т.п.
invalid_token
— переданный токен истёк, отозван, неправильно сформирован и
т.п.
insufficient_scope
— токен не предоставляет достаточных прав доступа
Пример ответа
#
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example",
error="invalid_token",
error_description="The access token expired"
Рекомендации по безопасности
#
- Защищайте токены доступа, клиенты должны защищать токены от
несанкционированного доступа
- Всегда используйте шифрованный канал связи данных
- Удостоверяйтесь в безопасности канала передачи токена
- Не сохраняйте токены доступа в куках веб-бразуера, если невозможно, то
применяйте техники их защиты
- Используйте токены с коротким сроком жизни, в районе часа
- Используйте токены с ограниченным пространством доступа
- Не передавайте токены в URI-параметрах запроса