JSON Web Token
JSON Web Token (JWT) — это открытый стандарт для создания токенов доступа, основанный на формате JSON.
Токены создаются сервером Яндекса, подписываются секретным ключом и передаются клиенту, который в дальнейшем использует токен для подтверждения своей личности перед своим сервером.
Формат запроса
Основной целью JSON Web Token является создание подписанного сообщения, с помощью которого пользователь обращается к сервису для доступа к ресурсам.
curl -H 'Authorization: OAuth <OAuth-токен> 'https://login.yandex.ru/info?format=jwt'
Описание параметров запроса можно посмотреть в разделе Обмен токена на информацию о пользователе.
Формат ответа
После обработки запроса пользователь получает JWT, который закодирован в base64 и подписан.
Пример подписанного сообщения:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
eyJpYXQiOjE2MTgyMDQ1NDMsImp0aSI6ImY1YzhlMjhiLTljMzYtMTFlYi1hZDUwLTAwMjU5MDkyODk4YSIsImV0OTgzODAzNywiaXNzIjoibGueWFuZGV4LnJ1IiwidWlkIjoxMTQyMzQ1MTU4LCJsb2dpbiI6InluZHgtZWxlbmJhc2tha292YSIsInBzdWlkIjoiMS5BQWNPX2cuaDh6eFQxNGVRSFRMSURYd2s1d203dy50Uks4cIczJiVEp3IiwibmFtZSI6Ilx1MDQxNVx1MDQzYlx2MDQzNVx1MDQzZFx1MDQzMCBcdTA0MTFcdTA0MzBcdTA0NDFcdTA0M2FcdTA0MzBcdTA0M2FcdTA0M2VcdTA0MzJcdTA0MzAiLCJlbWFpbCI6InluZHgtZWxlbmJhc2tha292YUB5YW5kZXgucnUiLCJiaXJ0aGRheSI6IiIsImdlbmRlciI6bnVsbCwiZGlzcGxheV9uYW1lIjoieW5keC1lbGVuYmFza2Frb3ZhIiwiYXZhdGFyX2lkIjoiMC7wLTAifQ.
O8NEvhJ0dI0OOnZSc7Bl-TvxZ1_JDrIpb7zYRW9Nzn
Чтобы извлечь информацию о пользователе из base64, используйте специальную библиотеку (например, библиотеку Python), которой в качестве параметров передается подписанное сообщение, ключ и алгоритм подписи JWT HS256.
Пример декодированного сообщения:
{
u'avatar_id': u'1824/mnL6oLbL5fhaAiY42uizvUCLJI-1',
u'birthday': u'',
u'display_name': u'user',
u'email': u'usere@yandex.ru',
u'exp': 16458707859,
u'gender': None,
u'iat': 1618313760,
u'iss': u'login.yandex.ru',
u'jti': u'6ba15884-9c4c-11eb-a478-5254005dbe7b',
u'login': u'user',
u'name': u'<i>user\u0418\u0432\u0430\u043D</u>',
u'psuid': u'1.AAAAfQ.Y6L7rKzy_w8aWJJu74tF9g.vAFTNxqI15bPA4A_35Dfiw',
u'uid': 3000250009
}
JWT содержит набор стандартных полей:
Поле |
Описание |
|
Unixtime выдачи JWT. |
|
Уникальный идентификатор токена. |
|
Срок действия токена. |
|
Хост, который выдал этот токен (например, login.yandex.ru). |
Набор дополнительных полей зависит от прав приложения, выбранных при регистрации приложения в Яндекс OAuth. Подробнее см. раздел Формат ответа.