Top.Mail.Ru
ID token | VK ID - сервис авторизации
VK ID auth service logo

ID token

Токен показывает, что пользователь проходил авторизацию. С помощью ID token можно получить публичные маскированные данные пользователя: первую букву фамилии, имя, идентификатор пользователя, фото, маскированные номер телефона и почту. ID token является JWT-токеном.
JSON Web Token или JWT — это открытый стандарт для создания токенов доступа, который основан на формате JSON.Токены создаются сервером VK ID, подписываются секретным ключом и передаются клиенту. Он использует токен для подтверждения своей личности перед своим сервером.
Есть два способа получения ID token по Authorization Code Flow:
  • (рекомендуемый) когда обмен авторизационного кода на токен происходит с бэкенда приложения. Это более безопасный способ;
  • когда обмен авторизационного кода на токен происходит с фронтенда приложения. Этот способ возможен, если у вашего приложения нет бэкенда.
Обязательно используйте расширение PKCE для защиты передаваемых данных. Основной целью JSON Web Token является создание подписанного сообщения, с помощью которого пользователь обращается к сервису для доступа к ресурсам. После обработки запроса пользователь получает JWT, который закодирован в base64 и подписан. Пример подписанного сообщения eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... Чтобы извлечь информацию из JWT токена, используйте специальную библиотеку. Для проверки достоверности токена используйте публичный ключ VK. Пример декодированного сообщения
payload: {
    'iis': 'VK',
    'sub': 000000000,
    'app': 51812311,
    'exp': 1618310760,
    'iat': 1709018605,
    'jti': 21
}
JWT содержит набор стандартных полей:
ПолеОписание
iisХост, который выдал этот токен, — VK
subuser_id, идентификатор пользователя
appclient_id, идентификатор приложения
expСрок действия токена
iatВремя выдачи JWT
jtiТип токена. Должен иметь значение 21
Чтобы с ID token получить маскированные данные пользователя, воспользуйтесь методом SDK VKID.Auth.publicInfo(id_token).

Валидация токена

Чтобы провалидировать ID token, используйте публичный ключ.
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvsvJlhFX9Ju/pvCz1frB
DgJs592VjdwQuRAmnlJAItyHkoiDIOEocPzgcUBTbDf1plDcTyO2RCkUt0pz0WK6
6HNhpJyIfARjaWHeUlv4TpuHXAJJsBKklkU2gf1cjID+40sWWYjtq5dAkXnSJUVA
UR+sq0lJ7GmTdJtAr8hzESqGEcSP15PTs7VUdHZ1nkC2XgkuR8KmKAUb388ji1Q4
n02rJNOPQgd9r0ac4N2v/yTAFPXumO78N25bpcuWf5vcL9e8THk/U2zt7wf+aAWL
748e0pREqNluTBJNZfmhC79Xx6GHtwqHyyduiqfPmejmiujNM/rqnA4e30Tg86Yn
cNZ6vLJyF72Eva1wXchukH/aLispbY+EqNPxxn4zzCWaLKHG87gaCxpVv9Tm0jSD
2es22NjrUbtb+2pAGnXbyDp2eGUqw0RrTQFZqt/VcmmSCE45FlcZMT28otrwG1ZB
kZAb5Js3wLEch3ZfYL8sjhyNRPBmJBrAvzrd8qa3rdUjkC9sKyjGAaHu2MNmFl1Y
JFQ3J54tGpkGgJjD7Kz3w0K6OiPDlVCNQN5sqXm24fCw85Pbi8SJiaLTp/CImrs1
Z3nHW5q8hljA7OGmqfOP0nZS/5zW9GHPyepsI1rW6CympYLJ15WeNzePxYS5KEX9
EncmkSD9b45ge95hJeJZteUCAwEAAQ==
-----END PUBLIC KEY-----