ym88659208ym87991671
Шаг 2. Запрос access token и id token | Документация для разработчиков

Шаг 2. Запрос access token и id token

Обновлено 7 октября 2024

На Схеме взаимодействия обозначен как «13. Запрос access token, id token».

Параметры запроса

Для успешного выполнения запроса необходимо использовать сертификат, полученый при регистрации приложения на портале Сбер ID, по нашей документации.

Back-end Партнера инициирует запрос в back-end Банка на получение access token и Id token, направляя в запросе полученный ранее код авторизации.

Пример запроса на получение access token и Id token:

POST 'https://oauth-psi.sber.ru/ru/prod/tokens/v2/oidc' \
--header 'accept: application/json' \
--header 'rquid: 012345678901234567890123456789FF' \
--header 'content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=FC49F1EA-245A-0FCD-2077-F3F73******' \
--data-urlencode 'client_id=5e7ee80a-6724-4078-8ee4-1dd63******' \
--data-urlencode 'client_secret=L4hE5nH3wB5lC6sP0bO7bA6yM5bH5hA3lN3******' \
--data-urlencode 'redirect_uri=https://api.developer.sber.ru/'

Важно!

Время timeout для ответа Сбер API — 10 сек.

Описание полей  запроса на получение access token и id token

№   п/пНаименование заголовка/поляЗаголовок / ПолеОписаниеОбязательность поля
1RqUIDЗаголовокУникальный идентификатор сообщения, «maxLength=32 и pattern=([0-9][a-f][A-F]){32})», переданный во входящем сообщении. Необходим для журналирования входящих вызовов и удобства разбора инцидентов. Чтобы обеспечить уникальность, можно использовать стандартные библиотеки и классы для генерации UUID/GUID (https://ru.wikipedia.org/wiki/UUID), убрав из результата разделители «-».Да
2content-typeЗаголовокВсегда принимает значение "application/x-www-form-urlencoded"Нет
3acceptЗаголовокМожет принимать значения application/json или application/jwt.Нет
4grant_typeПолеУказывается равным authorization_code.Да
5codeПолеКод авторизации, полученный от Банка. (См. Ответ на запрос кода авторизации).Да
6redirect_uriПолеЗначение параметра redirect_uri, которое было указано в запросе кода авторизации.Да
7client_idПолеИдентификатор системы Партнера, полученный партнером в личном кабинете после регистрации приложения.Да
8client_secretПолеПароль системы Партнера, полученный партнером в личном кабинете после регистрации приложения.Да

Параметры ответа

В случае успешной обработки запроса Back партнера получает access token и Id token. Ответ типа HTTP 200 OK. Описание полей ответа приведено в таблице Описание полей ответа.

Пример JSON сообщения - ответа в случае успешной обработки запроса:

HTTP/1.1 200 OK rquid: 012345678901234567890123456789FF { "access_token":"f213a511-58d7-4e7c-88b3-a6de380c81da",
"token_type":"bearer", "expires_in":60, "scope": "openid name email",
"id_token":"eyJhbGciOiJub25lIn0.eyJzdWIiOiI5ODg5YmQ2NDAzYzk0Nzg4ZGI0ZDY5ODVjY2U4MWViNz
c4MDE5NTU5ZTc3MWQyNTczMzFjODljMWUzMGY5NzRmZGJlOTQwODQ0YTg2ZGRjMyIsImF1dGhfdGltZSI6MTU2
ODk4MzE0Niwibm9uY2UiOiJMaXdrZEtoSU9ockRLdkpYMXNndkI1eGtrRlVWMm01am5BWUs3ZlhUSFNFIiwiaX
NzIjoiaHR0cHM6Ly9pZnQtY3NhLnRlc3RvbmxpbmUuc2JlcmJhbmsucnU6NDQ1Ni9DU0FGcm9udC9pbmRleC5k
byIsImlhdCI6MTU2ODk4MzE1OSwiZXhwIjoxNTY4OTgzNDQ2LCJhdWQiOiJFMzJCODZDMi1FNTUxLUREODMtNT JGRi1GREE2MjA2Q0VBM0MifQ." }

Описание полей ответа

№   п/пНаименование поляОписаниеПример
1access_tokenСгенерированный Access token.f213a511-58d7-4e7c-88b3-a6de380c81da
2token_typeТип запрашиваемого токена. Всегда передается значение «Bearer».Bearer
3expires_inВремя в секундах, в течение которого действует Access Token.60
4scopeСписок групп персональных данных, на получение которых выдан данный токен. В список так же по умолчанию включается название сервиса APIopenid name https://api.sberbank.ru/sberbankid/userinfo
5id_tokenЗакодированный набор атрибутов пользователя в формате base64_url, необходимый для идентификации пользователя.eyJhbGciOi-IgZ29zdDM0LTEwLjIwMTIifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiMTAwMSIsCi-Aibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjg0NTcwLAogImlhdCI6IDEzMTEyODA5NzAK4oCcc2lkMuKAnTrigJ0xMjM0NTY4Nzk5MjU14oCdIAog4oCcbmFtZSI6IOKAnNCY0LLQsNC90L7QsiDQmNCy0LDQvSDQmNCy0LDQvdC+0LLQuNGH4oCdCn0.EJqZnRKZVo0Q1ZQLW1COTJLMjd1aGJVSlUxcDFyX3dXMWdGV0ZPRWpYaw

Пример ID Token:

{
"iss": "id.sber.ru",
"sub": "74c64d08bdd5e6f2b94770e9fed9342b9054f22bea1571e68448c8cae83e0d80ec206549e11d13fc",
"aud": "DA5278AC - A07F - C01A -B2D3 - C231DBB2E20F",
"exp": 141254872,
"iat": 1411250872,
"auth_time": 1411250871,
"nonce": "n - 0 S6_WzA2Mj"
}

Описание полей ID Token

№   п/пНаименование поляОписаниеПримечание
1subНеизменный уникальный идентификатор клиента в АС Банка, передаваемый внешним потребителям.Максимальная длина 96 символов.Идентификатор клиента банка, используемый внешними АС.  Идентификатор может быть  сохранен у Партнера. 
2issURL сервиса (URL АС банка), сформировавшего ID Token.
3audИдентификатор внешней АС/ресурсной системы (client_id).При получении ID_Token партнеру необходимо сравнить значение aud  со значением своего client_id. Если значения не совпадают, то партнер должен завершить сценарий без авторизации клиента на своем ресурсе.
4expВремя, до наступления которого гарантируется неизменность информации о клиенте в составе ID Token.
5iatВремя формирования ID Token.
6auth_timeВремя аутентификации клиента в АС Банка при запросе кода авторизации.
7nonceЗначение переменной, сгенерированная ресурсной системой/внешней АС для предотвращения атак повторения при запросе кода авторизации.Партнер  получив ID_Token  должен проверить значение параметра nonce, что полученное значение nonce равно значению параметра nonce, отправленного в запросе на аутентификацию. Если значения не совпадают, то Партнер должен завершить сценарий без авторизации клиента на своем ресурсе.

Мэтчинг учетных записей

После получения идентификатора в Сбер ID (sub в ID Token) рекомендуется следующий сценарий:

  1. Партнер ищет у себя учетную запись (по sub из ID Token), к которой привязан Сбер ID
  2. Если такая учетная запись найдена по sub, Партнер аутентифицирует Клиента
  3. Если такой учетной записи не найдено, то Партнер может попробовать поискать учетную запись Клиента по данным, полученным через Сбер ID (например, адрес электронной почты, номер телефона и т.д.)
  • Если такая учетная запись найдена (по дополнительным данным), Партнер предлагает Клиенту привязать ее к уже существующей. Клиент может пропустить этот шаг. В случае, если клиент пропускает этот шаг, то Партнер аутентифицирует Клиента.

  • Если такой учетной записи не найдено, Партнер аутентифицирует Клиента

Пример окна с предложением привязать учетную запись
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.