Top.Mail.Ru
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. Пример подписанного сообщения 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-----