Bearer Token
Один из типов токенов ( tokens ), используемых в платформе авторизации OAuth 2.0. Bearer Token или «Токен на предъявителя» — сторона владеющая токеном («предъявитель», bearer ), может использовать токен ( token ) любым способом (как и любая другая сторона, например разные клиенты или приложения). Использование токена не требует от предъявителя доказательства владения. То есть, имея токен, любое приложение может получить доступ к ресурсам.
Выдает токен сервер авторизации. Часто владелец ресурса и сервер авторизации это одно и тоже, но не всегда.
Например, какое-либо приложение запрашивает доступ к вашему «Яндекс Диску», запрос направляется в сервис, сервис проверяет статус вашей авторизации, если вы вошли в аккаунт, то показывает страницу с подтверждением на доступ, если нет, отправляет на страницу авторизации (войти), затем возвращает назад, к странице подтверждения прав. Если вы согласны предоставить доступ, нажали «да» или что-то подобное, токен будет отправлен обратно в приложение (callback request). Приложение сохранит токен у себя, и будет его использовать для доступа к вашим ресурсам на «Яндекс Диске». При этом используется только токен, ваши разрешения, имя пользователя и пароль больше не требуются.
Токен можно отозвать, для этого на стороне сервиса, выдающего токены должен быть специальный интерфейс, обычно это можно сделать в профиле пользователя и на стороне сервиса или на стороне приложения.
Токен может и должен выдаваться на ограниченный период времени. Так можно уменьшить риск несанкционированного использования.
Токен — это простая строка, текст. Bearer-токен удобно использовать для интеграций, автоматизации и обмена данными между сервисами и приложениями.
+--------+ +---------------+ | |--(A)- Authorization Request ->| Resource | | | | Owner | | || Authorization | | Client | | Server | | || Resource | | | | Server | | |
Для передачи токена обычно используется заголовок Authorization:
GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer
При запросе авторизации токен возвращается в ответе сервера с указанием типа
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache < "access_token":"", "token_type":"Bearer", "expires_in":3600, "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA" >
Sign up for more like this.
Enter your email
slimrb
Преобразование Slim в Erb. slimrb консольная утилита запускается в командной строке. Использование Slim в качестве основного шаблонизатора очень удобно и продуктивно. Но накладывает ограничения на форматирование. Не всегда удобно, когда в команде работают специалисты разного уровня подготовки. Для сложных и объемных страниц может быть сложным. Slim - супер решение, но
13 июня 2023 г. 1 min read
Nuxt: взгляд в 2023
Результатом многолетней работы стал не только выпуск новой версии Nuxt (3), но новая архитектура, функциональная серверная среда (Nitro) и новая организационная экосистема в Github (UnJs)
25 янв. 2023 г. 1 min read
Получение данных в Nuxt
Хук fetch наиболее универсальный способ получения данных. Может использоваться в компонентах, макета, страницах, выполнятся на стороне сервера и клиента.
Что такое bearer token?
Для чего он нужен, и в каких случаях его использовать, если по-простому?
- Вопрос задан более трёх лет назад
- 92706 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
Full-stack developer (Symfony, Angular)
Ответ написан более трёх лет назад
Нравится 2 1 комментарий
tamtakoe @tamtakoe Автор вопроса
Это я читал, но, видимо, суть не ухватил.
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Идентификация пользователей
- +1 ещё
Каким способом лучше хранить access и refresh токены?
- 2 подписчика
- 24 окт.
- 55 просмотров
- Идентификация пользователей
- +2 ещё
Какие данные отправлять на бэк для сохранения и идентификации пользователя в next auth?
- 1 подписчик
- 02 окт.
- 37 просмотров
- Компьютерные сети
- +3 ещё
Авторизация в web сервисе через субдомен или поп-ап, минусы и плюсы?
- 2 подписчика
- 02 окт.
- 142 просмотра
- Идентификация пользователей
- +1 ещё
Смысл в JWT, если любой его может распарсить?
- 1 подписчик
- 28 сент.
- 116 просмотров
- Идентификация пользователей
- +1 ещё
Как авторизоваться на сайте использующем steam opedID?
- 1 подписчик
- 22 сент.
- 34 просмотра
- Веб-разработка
- +1 ещё
Имеет ли смысл хранить refresh-токены?
- 6 подписчиков
- 20 сент.
- 485 просмотров
- Telegram
- +3 ещё
Как войти в телеграм по номеру?
- 2 подписчика
- 17 сент.
- 248 просмотров
- Идентификация пользователей
Fastpanel двухъярусная защита по VK.?
- 1 подписчик
- 07 сент.
- 17 просмотров
- Идентификация пользователей
Как сделать авторизацию по whatsapp на сайте?
- 1 подписчик
- 05 сент.
- 56 просмотров
- Системное администрирование
- +3 ещё
Как найти причину блокировки аккаунтов в Active Directory?
- 2 подписчика
- 03 сент.
- 198 просмотров
от 32 000 до 45 000 ₽
i-Free • Санкт-Петербург
29 окт. 2023, в 06:49
5000 руб./за проект
29 окт. 2023, в 01:44
3000 руб./за проект
28 окт. 2023, в 23:32
10000 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Какой курс по asp.net core вы можете посоветовать?
- 4 подписчика
- 1 ответ
- 3 подписчика
- 2 ответа
- 2 подписчика
- 0 ответов
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ
- 2 подписчика
- 2 ответа
- 3 подписчика
- 0 ответов
- 2 подписчика
- 1 ответ
- 2 подписчика
- 0 ответов
- 2 подписчика
- 2 ответа
What is Bearer Token (An Ultimate Guide)
What is Bearer Token? A complete explanation of its details! There are many API authentication methods over HTTP. Bearer Token is one of the most commonly used. In this article, Bearer Token will be fully explained to you.
What is Bearer Token (An Ultimate Guide)
There are many API authentication methods over HTTP, such as Basic Authentication and Digest Authentication. Among them, Bearer Token is one of the most commonly used. In this article, we will fully explain Bearer Token to you.
What is a Bearer Token?
A Bearer token is a type of token used for authentication and authorization and is used in web applications and APIs to hold user credentials and indicate authorization for requests and access.
Bearer tokens are generated based on protocols and specifications such as OAuth and JWT (JSON Web Token). The authenticated user obtains the Bearer token issued by the server and sends it to the server in the header of the request. The server verifies the received bearer token and controls user access based on the token. The Bearer token is also usually sent over an encrypted connection via HTTPS. This prevents unauthorized access by malicious third parties even if the token is stolen.
Composition of the Bearer Token
Bearer tokens are generally composed of a random string of characters. Formally, it takes the form of the "Bearer" keyword and the token value separated by spaces. The following is the general form of a Bearer token:
Bearer
Here is an example of an actual Bearer token:
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikpva
BearerBearer Token validity period
Bearer tokens are typically used as temporary access tokens. The token has a validity period, and when it expires, the user must re-authenticate.
The validity period of the Bearer token depends on the implementation and the authentication protocol used. In general, the server can specify a validity period when issuing the token. The validity period is the amount of time from the issuance of the token until it becomes invalid. Common ways of expressing the validity period include the following:
Absolute time: An absolute time (e.g., 30 minutes, 1 hour, etc.) from the time the token was issued.
Relative Time: A relative time (e.g., 24 hours, 1 week, etc.) relative to the time the token was issued. Once expired, the token will either be rejected by the server or will require re-authentication. The shorter the expiration time, the better the security, but the worse the user experience may be. Conversely, too long a validity period increases the risk of misuse if the token is compromised.
The specific validity period of a Bearer token depends on the server and application configuration and requirements. In general, it is important to set an appropriate validity period from a security perspective.
Sending requests containing Bearer Token informationBearer tokens are used in many Web services and APIs and play an important role in achieving secure authentication and access control. So, when accessing many Web APIs, Bearer Token is required. In such cases, how do you pass the Bearer Token to access the Web API?
Next, we will show you how to use Apidog, a sophisticated API management tool, to authenticate the Bearer Token, send the request, and get the response.
How to Authenticate the Bearer Token in Apidog
When unit testing an API in Apidog, the Bearer Token authentication method is very simple.
Open an existing API in Apidog, switch to "Debug" mode, select "Request" > "Auth", specify the type as "Bearer Token", and enter the Token in the input box at the bottom to submit.
It's important to note that bearer tokens should be kept secure and not shared unnecessarily. They should also be periodically rotated or revoked as required for security purposes.
Идентификационный токен и токен доступа: в чем разница?
«Давайте воспользуемся токеном для защиты вызова API. Что мне использовать: ID-токен или Access токен? ID токен мне кажется предпочтительнее. В конце концов, если я знаю, кто является пользователем, я могу принимать более обоснованные решения об авторизации, верно?» Вам когда-нибудь приходилось приводить подобные аргументы? Выбор, основанный на интуиции, может оказаться хорошим, но то, что кажется интуитивным, не всегда верно. В случае ID и Access токенов, имеющих ясные и четко определенные цели, пользоваться ими нужно, исходя из этих соображений. Использование неправильного токена может привести к тому, что ваше решение будет небезопасным. «Что в конце концов изменится? Это всего лишь токены. Я могу использовать их по своему усмотрению. Что такого плохого может случиться?» Давайте подробнее рассмотрим эти два типа токенов, чтобы лучше понять их роль в процессах аутентификации и авторизации.
Что такое идентификационный токен?
ID токен — это артефакт, подтверждающий, что пользователь прошел аутентификацию. Он был представлен OpenID Connect (OIDC), открытым стандартом аутентификации, используемым многими системами идентификации такими, как Google, Facebook и, конечно же, Auth0. Ознакомьтесь с этим документом для получения дополнительных сведений об OpenID Connect. Давайте кратко рассмотрим проблему, которую призван решить OIDC. Рассмотрим следующую схему: Здесь пользователь со своим браузером аутентифицируется через провайдер OpenID и получает доступ к веб-приложению. Результатом процесса аутентификации на основе OpenID Connect является ID токен, который передается приложению в качестве доказательства того, что пользователь прошел аутентификацию. Подтверждение аутентификации пользователя это всего лишь базовое представление об ID токене. Рассмотрим это подробнее. Идентификационный токен JSON Web Token (JWT) — стандартный формат, который позволяет вашему приложению легко проверить его содержимое и убедиться, что оно исходит от ожидаемого эмитента и что никто другой его не менял. Если вы хотите узнать больше о JWT, посмотрите «The JWT Handbook». Проще говоря, пример ID токена выглядит так: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vbXktZG9tYWluLmF1dGgwLmNvbSIsInN1YiI6
ImF1dGgwfDEyMzQ1NiIsImF1ZCI6IjEyMzRhYmNkZWYiLCJleHAiOjEzMTEyODE5NzAsImlhdCI6MTMxMTI4MDk3MCwibm
FtZSI6IkphbmUgRG 9lIiwiZ2l2ZW5fbmFtZSI6IkphbmUiLCJmYW1pbHlfbmFtZSI6IkRvZSJ9 Конечно, просто «на глазок» это не прочесть, поэтому вам нужно расшифровать его, чтобы увидеть, какой контент содержит JWT. Между прочим, ID токен не зашифрован, а закодирован только в Base 64. Вы можете использовать одну из множества доступных библиотек для его декодирования или самостоятельно проверить его с помощью сайта jwt.io. Не вдаваясь в подробности, соответствующая информация, содержащаяся в указанном выше ID токене, выглядит следующим образом: < "iss": "http://my-domain.auth0.com", "sub": "auth0|123456", "aud": "1234abcdef", "exp": 1311281970, "iat": 1311280970, "name": "Jane Doe", "given_name": "Jane", "family_name": "Doe" >Эти свойства JSON называются «claims (заявки)», и они представляют собой заявления о пользователе и самом токене. Заявки о пользователе позволяют определить его личность. Фактически, спецификации OpenID Connect не требуют, чтобы ID токен содержал заявку о пользователе. В своей минимальной структуре он содержит данные только для аутентификации. Одним из важных требований является «aud» заявка. Оно определяет получателя, то есть веб-приложение, которое должно быть конечным получателем токена. В случае с использованием ID токена, значением «aud» будет Client ID приложения, которое должно использовать токен. Запомните это небольшое уточнение об ограничении целевой информационной системы, поскольку оно поможет вам лучше понять, как в дальнейшем им правильно пользоваться. Идентификационный токен может содержать дополнительную информацию о пользователе: адрес его электронной почты, фотографию, день рождения и т. д. Наконец, возможно, самое важное: ID токен подписывает эмитент своим закрытым ключом. Для вас это гарантия происхождения токена и того, что он не был подделан. Это можно проверить, используя открытый ключ эмитента. Здорово! Теперь вы знаете, что такое идентификационный токен. Но что вы можете с ним делать? Во-первых, он демонстрирует, что пользователь был аутентифицирован организацией, которой вы доверяете (провайдер OpenID), и поэтому вы можете доверять его личным данным. Кроме того, ваше приложение может персонализировать взаимодействие с пользователями, используя данные о пользователе, включенные в ID токен. Например, вы можете показать имя в пользовательском интерфейсе или отобразить сообщение «С наилучшими пожеланиями» в день рождения. Самое интересное в том, что вам не нужно делать дополнительных запросов, поэтому вы можете немного повысить производительность своего приложения.Что такое токен доступа?
Теперь, когда вы знаете, что такое идентификационный токен, давайте попробуем понять, что такое Access токен. Начнем с описания сценария, в который вписывается токен доступа: На схеме выше клиентское приложение хочет получить доступ к ресурсу, например API или чему-либо еще, что защищено от несанкционированного доступа. Два других элемента на этой диаграмме — это пользователь, который является владельцем ресурса, и сервер авторизации. В этом сценарии Access токен является артефактом, позволяющим клиентскому приложению получить доступ к ресурсу пользователя. Он выдается сервером авторизации после успешной аутентификации пользователя и получения его согласия. В контексте OAuth 2 Access токен позволяет клиентскому приложению получать доступ к определенному ресурсу для выполнения определенных действий от имени пользователя. Что известно как сценарий делегированной авторизации: пользователь делегирует клиентскому приложению доступ к ресурсу от своего имени. Это значит, например, что вы можете от своего имени разрешить приложению LinkedIn доступ к API Twitter для перекрестной публикации на обеих социальных платформах. Заметьте, что вы разрешаете LinkedIn только публиковать свои сообщения в Twitter. Вы не разрешаете ему удалять их, изменять данные вашего профиля или делать что-то еще. Это ограничение очень важно в сценарии делегированной авторизации и достигается с помощью областей действия, или scopes. Области действия — это механизм, позволяющий пользователю авторизовать стороннее приложение для выполнения только определенных операций. Конечно, API, получающий Access токен, должен получить подтверждение, что это в самом деле действительный токен, выпущенный сервером авторизации, которому он доверяет, и принимать решения об авторизации на основе связанной с ним информации. Другими словами, API должен каким-то образом использовать этот токен, чтобы авторизовать клиентское приложение для выполнения желаемой операции с ресурсом. Как следует использовать Access токен для принятия решений об авторизации, зависит от многих факторов: общей архитектуры системы, формата токена и т. д. Например, токен доступа может быть ключом, который позволяет API извлекать необходимую информацию из базы данных, совместно используемую с сервером авторизации, или может напрямую содержать необходимую информацию в закодированном формате. Это значит, что понимание того, как получить необходимую информацию для принятия решений об авторизации, является соглашением между сервером авторизации и сервером ресурсов, то есть API. В спецификации OAuth 2 ничего не говорится о формате Access токена. Это может быть строка в любом формате. Распространенным форматом, используемым для токенов доступа, является JWT, и на данный момент этот стандарт в разработке. Однако это не значит, что Access токены должны быть именно в этом формате. Хорошо! Теперь вы знаете, что такое ID-токен и Access токен. Итак, вы готовы использовать их, не боясь ошибиться. Но подождите. Мне кажется, вы не уверены. Возможно, вам нужна другая информация. Ok. Итак, давайте посмотрим, для чего эти токены не подходят.
Для чего НЕ подходит ID-токен?
Одна из наиболее распространенных ошибок, допускаемых разработчиками при использовании идентификационного токена — это использование его для вызова API. Как сказано выше, ID токен доказывает, что пользователь прошел аутентификацию. В собственном сценарии, то есть в сценарии, в котором клиент и API контролируются вами, вы можете решить, что ваш идентификационный токен подходит для принятия решений об авторизации и, возможно, все, что вам нужно знать — это личность пользователя. Однако даже в этом сценарии безопасность вашего приложения, состоящего из клиента и API, может быть под угрозой. Фактически, не существует механизма, который привязывает ID токен к каналу клиентского API. Если злоумышленнику удастся украсть вашу «личность», он может использовать ее для вызова вашего API как законного клиента. С другой стороны, для Acces токена существует набор методов, известных как ограничение отправителя (sender constraint), которые позволяют привязать токен доступа к определенному отправителю. Это гарантия того, что даже если злоумышленник украдет Access токен, он не сможет использовать его для доступа к вашему API, поскольку токен привязан к клиенту, который изначально его запросил. В сценарии делегированной авторизации, когда сторонний клиент хочет вызвать ваш API, нельзя использовать ID токен для вызова API. Помимо отсутствия механизмов привязки к клиенту есть несколько других причин, по которым этого не следует делать. Если ваш API принимает ID токен в качестве токена авторизации, вы сначала игнорируете предполагаемого получателя, указанного в aud (audience claim). В этом утверждении говорится, что он предназначен для вашего клиентского приложения, а не для сервера ресурсов (т. е. API). Можно подумать, что это всего лишь формальность, но такой подход может повлечь за собой риски для безопасности. Прежде всего, кроме прочих проверок, ваш API не должен принимать токен, который для него не предназначен. Если это произойдет, его безопасность окажется под угрозой. Фактически, если вашему API все равно, предназначен ли для него токен, для доступа к нему может быть использован ID токен, украденный из любого клиентского приложения, может быть использован для доступа к вашему API. Разумеется, для предотвращения несанкционированного доступа, проверка aud — это всего лишь одна из проверок, которую должен выполнять ваш API. Кроме того, вашему идентификатору не будут предоставлены области действия (да, это еще одна боль). Как было сказано ранее, области позволяют пользователю ограничивать операции, которые ваше клиентское приложение может выполнять от их имени. Эти области связаны с Access токеном, чтобы ваш API знал, что может делать клиентское приложение, а что нет. Если ваше клиентское приложение использует ID токен для вызова API, вы игнорируете эту функцию и потенциально разрешаете приложению выполнять действия, не авторизованные пользователем.
Для чего НЕ подходит Access токен?
Что касается Access токена, то он был задуман, чтобы продемонстрировать, что вы авторизованы для доступа к ресурсу, например, для вызова API. Ваше клиентское приложение должно использовать его только с этой целью. Другими словами, Access токен не должен проверяться клиентским приложением. Он предназначен для сервера ресурсов, и клиентское приложение должно обрабатывать Access токены как непрозрачные строки, то есть строки без определенного значения. Даже если вам известен формат Access токена, не следует пытаться интерпретировать его содержимое в клиентском приложении. Как уже говорилось, формат Access токена — это соглашение между сервером авторизации и сервером ресурсов, и клиентское приложение не должно вмешиваться. Подумайте, что может случиться, если однажды формат Access токена изменится. Если ваш клиентский код (client code) проверял этот Access токен, в этом случае он будет тотчас сломан.
Краткий обзор
Путаница с использованием ID и Access токенов очень распространена, и, возможно, трудно понять различия между ними. Может быть, это в основном связано с отсутствием четкого понимания различных целей каждого артефакта, определенных в спецификациях OAuth и OpenID Connect. Кроме того, понимание сценариев, в которых изначально должны были действовать эти артефакты, играет важную роль в предотвращении путаницы при их использовании. Тем не менее, я надеюсь, что теперь эта тема немного прояснилась. В иллюстрации кратко изложено то, что можно и чего нельзя делать с ID и Access токенами: Переведено со статьи, полный текст доступен по ссылке.