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-параметрах запроса