Bearer-аунтентификация

Bearer-аутентификация #

Васильев Андрей Михайлович, 2025

Версии презентации


Bearer-аутентификация #

Детали работы данного формата аутентификации описаны в RFC6750

  • Bearer-токен вводится как часть работы протокола OAuth 2.0
  • Данный токен может быть использован для доступа к ресурсному серверу

После получения токена от сервера авторизации клиент может воспользоваться им для выполнения запроса к ресурсному серверу

diagram


Варианты передачи 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-параметрах запроса

© A. M. Васильев, 2025, CC BY-SA 4.0, andrey@crafted.su