Bearer Token
Один из типов токенов ( tokens
), используемых в платформе авторизации OAuth 2.0. Bearer Token
или «Токен на предъявителя» - сторона владеющая токеном («предъявитель», bearer
), может использовать токен ( token
) любым способом (как и любая другая сторона, например разные клиенты или приложения). Использование токена не требует от предъявителя доказательства владения. То есть, имея токен, любое приложение может получить доступ к ресурсам.
Выдает токен сервер авторизации. Часто владелец ресурса и сервер авторизации это одно и тоже, но не всегда.
Например, какое-либо приложение запрашивает доступ к вашему "Яндекс Диску", запрос направляется в сервис, сервис проверяет статус вашей авторизации, если вы вошли в аккаунт, то показывает страницу с подтверждением на доступ, если нет, отправляет на страницу авторизации (войти), затем возвращает назад, к странице подтверждения прав. Если вы согласны предоставить доступ, нажали "да" или что-то подобное, токен будет отправлен обратно в приложение (callback request). Приложение сохранит токен у себя, и будет его использовать для доступа к вашим ресурсам на "Яндекс Диске". При этом используется только токен, ваши разрешения, имя пользователя и пароль больше не требуются.
Токен можно отозвать, для этого на стороне сервиса, выдающего токены должен быть специальный интерфейс, обычно это можно сделать в профиле пользователя и на стороне сервиса или на стороне приложения.
Токен может и должен выдаваться на ограниченный период времени. Так можно уменьшить риск несанкционированного использования.
Токен - это простая строка, текст. Bearer-токен удобно использовать для интеграций, автоматизации и обмена данными между сервисами и приложениями.
+--------+ +---------------+
| |--(A)- Authorization Request ->| Resource |
| | | Owner |
| |<-(B)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(C)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(D)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(E)----- Access Token ------>| Resource |
| | | Server |
| |<-(F)--- Protected Resource ---| |
+--------+ +---------------+
Для передачи токена обычно используется заголовок Authorization:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <token>
При запросе авторизации токен возвращается в ответе сервера с указанием типа
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"<token>",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
}