На Схеме взаимодействия обозначен как «13. Запрос access token, id token».
Параметры запроса
Для успешного выполнения запроса необходимо использовать сертификат, полученый при регистрации приложения на портале Сбер ID , по нашей документации .
Back-end Партнера инициирует запрос в back-end Банка на получение access token и Id token, направляя в запросе полученный ранее код авторизации.
Пример запроса на получение access token и Id token:
- Тестовый стенд
- ПРОМ
POST 'https://oauth-ift.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/'
POST 'https://oauth.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
№ п/п | Наименование заголовка/поля | Заголовок / Поле | Описание | Обязательность поля |
---|---|---|---|---|
1 | RqUID | Заголовок | Уникальный идентификатор сообщения, «length=32 и pattern=([0-9][a-f][A-F])32)», переданный во входящем сообщении. Необходим для журналирования входящих вызовов и удобства разбора инцидентов. Чтобы обеспечить уникальность, можно использовать стандартные библиотеки и классы для генерации UUID/GUID (https://ru.wikipedia.org/wiki/UUID ), убрав из результата разделители «-». | Да |
2 | content-type | Заголовок | Всегда принимает значение "application/x-www-form-urlencoded" | Нет |
3 | accept | Заголовок | Может принимать значения application/json или application/jwt. | Нет |
4 | grant_type | Поле | Указывается равным authorization_code . | Да |
5 | code | Поле | Код авторизации, полученный от Банка. (См. Ответ на запрос кода авторизации). | Да |
6 | redirect_uri | Поле | Значение параметра redirect_uri , которое было указано в запросе кода авторизации. | Да |
7 | client_id | Поле | Идентификатор системы Партнера, полученный партнером в личном кабинете после регистрации приложения. | Да |
8 | client_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." }
Описание полей ответа
№ п/п | Наименование поля | Описание | Пример |
---|---|---|---|
1 | access_token | Сгенерированный Access token. | f213a511-58d7-4e7c-88b3-a6de380c81da |
2 | token_type | Тип запрашиваемого токена. Всегда передается значение «Bearer». | Bearer |
3 | expires_in | Время в секундах, в течение которого действует Access Token. | 60 |
4 | scope | Список групп персональных данных, на получение которых выдан данный токен. В список так же по умолчанию включается название сервиса API | openid name https://api.sberbank.ru/sberbankid/userinfo |
5 | id_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
№ п/п | Наименование поля | Описание | Примечание |
---|---|---|---|
1 | sub | Неизменный уникальный идентификатор клиента в АС Банка, передаваемый внешним потребителям.Максимальная длина 96 символов. | Идентификатор клиента банка, используемый внешними АС. Идентификатор может быть сохранен у Партнера. |
2 | iss | URL сервиса (URL АС банка), сформировавшего ID Token. | |
3 | aud | Идентификатор внешней АС/ресурсной системы (client_id ). | При получении ID_Token партнеру необходимо сравнить значение aud со значением своего client_id . Если значения не совпадают, т о партнер должен завершить сценарий без авторизации клиента на своем ресурсе. |
4 | exp | Время, до наступления которого гарантируется неизменность информации о клиенте в составе ID Token. | |
5 | iat | Время формирования ID Token. | |
6 | auth_time | Время аутентификации клиента в АС Банка при запросе кода авторизации. | Cекунды считается с 1970 года можно тут перевести https://www.unixtimestamp.com/ |
7 | nonce | Значение переменной, сгенерированная ресурсной системой/внешней АС для предотвращения атак повторения при запросе кода авторизации. | Партнер получив ID_Token должен проверить значение параметра nonce, что полученное значение nonce равно значению параметра nonce, отправленного в запросе на аутентификацию. Если значения не совпадают, то Партнер должен завершить сценарий без авторизации клиента на своем ресурсе. |
Мэтчинг учетных записей
После получения идентификатора в Сбер ID (sub в ID Token) рекомендуется следующий сценарий:
- Партнер ищет у себя учетную запись (по sub из ID Token), к которой привязан Сбер ID
- Если такая учетная запись найдена по sub, Партнер аутентифицирует Клиента
- Если такой учетной записи не найдено, то Партнер может попробовать поискать учетную запись Клиента по данным, полученным через Сбер ID (например, адрес электронной почты, номер телефона и т.д.)
-
Если такая учетная запись найдена (по дополнительным данным), Партнер предлагает Клиенту привязать ее к уже существующей. Клиент может пропустить этот шаг. В случае, если клиент пропускает этот шаг, то Партнер аутентифицирует Клиента.
-
Если такой учетной записи не найдено, Партнер аутентифицирует Клиента
