Bearer Token

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"
     }