Получение информации о пользователе (user-info)
/ic/sso/api/v2/oauth/user-info
Запрос позволяет получить информацию о клиенте в ID token. GET-запрос должен содержать токен доступа (access_token) пользователя в параметре Authorization заголовка.
Для обращения к ресурсу необходимо отправлять запрос на:
- Тестовый контур
https://iftfintech.testsbi.sberbank.ru:9443
- Промышленный контур
https://fintech.sberbank.ru:9443
В ответе на запрос /ic/sso/api/v2/oauth/user-info
возвращается только тот набор атрибутов (claims), который был указан в scope ссылки авторизации. С полным перечнем claims и примером ответов можно ознакомиться (здесь).
Request
/ic/sso/api/v2/oauth/user-info
- Модель
- Пример
Наименование | Тип | Формат | Regexp | Обязательность | Описание |
---|---|---|---|---|---|
HEADER | |||||
Authorization | string | string | ^[a-zA-Z0-9]38$ | required | Access token пользователя, полученный через SSO. |
GET /ic/sso/api/v2/oauth/user-info HTTP/1.1
Authorization: Bearer xbgDF3brf456ghi789jkl012mNKFtEpqr678fd
Responses
200 (OK)
- Модель
- ID token
- Структура
Параметр | Описание |
---|---|
HEADER | |
typ | Тип токена |
alg | Алгоритм шифрования |
PAYLOAD | |
aud | Идентификатор платформы, для которого сформирован ID Token |
iss | URL сервиса, сформировавшего ID Token |
sub | Уникальный идентификатор пользователя |
Значения атрибутов (claim) | которые указали в Scope в ссылке запроса /v2/oauth/token |
SIGNATURE | |
Массив байт электронной подписи | Проверка электронной подписи, полученной в ID Token (содержимое ответа ID Tokena после второй точки), выполняется, используя алгоритм, указанный в параметре заголовка JWT alg. Платформе необходимо проверить подпись сертификатом Банка |
eyJ0eXAiOiJKV1QiLCJhbGciOiJnb3N0MzQuMTAtMjAxMiJ9.eyJzdWIiOiI2MjA2Mjg1NDA5ZmNjMjhjZDFmOTZhZjg4MGI1ZjkyNDJiYjZjZGU2NmU3ZGRkZmRmZDNjZGU0YzcyMzcyZWQxIiwib3JnS3BwIjoiNjgzODAxOTEwIiwiaXNzIjoiaHR0cHM6Ly9lZnMtc2Jib2wtaWZ0LXdlYi50ZXN0c2JpLnNiZXJiYW5rLnJ1Ojk0NDMvaWMiLCJpbm4iOiI3Mzc5MTkwNTIyIiwib3JnSnVyaWRpY2FsQWRkcmVzcyI6IjEyNzY0NCwg0LMu0JzQvtGB0LrQstCwLCDQsS3RgC4g0JrQsNGA0LXQu9GM0YHQutC40LksINC00L7QvCA1LCDQutC-0YDQvy4gMSwg0L7RhC4gMjQwIiwiT3JnTmFtZSI6ItCi0JXQodCiOTAzNiIsIm9yZ0Z1bGxOYW1lIjoi0KLQldCh0KI5MDM2IiwiYnV5T25DcmVkaXRNbWIiOnRydWUsImluZGl2aWR1YWxFeGVjdXRpdmVBZ2VuY3kiOjEsInRlckJhbmsiOiLQo9Cg0JDQm9Cs0KHQmtCY0Jkg0JHQkNCd0Jog0J_QkNCeINCh0LHQtdGA0LHQsNC90LoiLCJ1c2VyQ3J5cHRvVHlwZSI6IlNNUyIsImF1ZCI6IjkyMjMzNzY0NTY3Mzk2Iiwic3VtbU9mZmVyU21hcnRDcmVkaXQiOjAsIm9yZ0xhd0Zvcm1TaG9ydCI6ItCe0J7QniIsIm9yZ09ncm4iOiIxMjM4MjE1OTQ1NjM3Iiwib3JnQWN0dWFsQWRkcmVzcyI6IjEyNzY0NCwg0LMu0JzQvtGB0LrQstCwLCDQsS3RgC4g0JrQsNGA0LXQu9GM0YHQutC40LksINC00L7QvCA1LCDQutC-0YDQvy4gMSwg0L7RhC4gMjQwIiwiSGFzaE9yZ0lkIjoiNmU3Y2U2NTgyZDMwMTkwZmRmYzAxMTExMDY4ZWNjMjNlMmRkY2QzZWFkYTBhNjA3MzU3ZTEwNDg4NWZmYjI3ZCIsIm9mZmVyU21hcnRDcmVkaXQiOmZhbHNlLCJuYW1lIjoi0KTQsNC8MDQg0JjQvNGPMDQg0J7RgtGHMDQiLCJ1c2VyUG9zaXRpb24iOiLQlNC40YDQtdC60YLQvtGAIiwiaGFzQWN0aXZlQ3JlZGl0TGluZSI6ZmFsc2UsInBob25lX251bWJlciI6Ijc0NDIwMDI0ODk2Iiwib3JnTGF3Rm9ybSI6ItCe0LHRidC10YHRgtCy0L4g0YEg0L7Qs9GA0LDQvdC40YfQtdC90L3QvtC5INC-0YLQstC10YLRgdGC0LLQtdC90L3QvtGB0YLRjNGOIiwiZW1haWwiOiJoaHlhVUBDbmduRS5EQiJ9.IhE9hwMISp3vcxuW7lRctZC2vXLPfIUPIisYgrqoEiAEaKx0T7uFQk_W1jD1oJ1j_bDBWbvVYOF7nT8zMDX8yw
Заголовок. Алгоритм и тип токена:
{
"typ": "JWT",
"alg": "gost34.10-2012"
}
Полезная нагрузка:
{
"sub": "6206285409fcc28cd1f96af880b5f9242bb6cde66e7dddfdfd3cde4c72372ed1",
"orgKpp": "683801910",
"iss": "https://efs-sbbol-ift-web.testsbi.sberbank.ru:9443/ic",
"inn": "7379190522",
"orgJuridicalAddress": "127644, г.Москва, б-р. Карельский, дом 5, корп. 1, оф. 240",
"OrgName": "ТЕСТ9036",
"orgFullName": "ТЕСТ9036",
"buyOnCreditMmb": true,
"individualExecutiveAgency": 1,
"terBank": "УРАЛЬСКИЙ БАНК ПАО Сбербанк",
"userCryptoType": "SMS",
"aud": "92233764567396",
"summOfferSmartCredit": 0,
"orgLawFormShort": "ООО",
"orgOgrn": "1238215945637",
"orgActualAddress": "127644, г.Москва, б-р. Карельский, дом 5, корп. 1, оф. 240",
"HashOrgId": "6e7ce6582d30190fdfc01111068ecc23e2ddcd3eada0a607357e104885ffb27d",
"offerSmartCredit": false,
"name": "Фам04 Имя04 Отч04",
"userPosition": "Директор",
"hasActiveCreditLine": false,
"phone_number": "74420024896",
"orgLawForm": "Общество с ограниченной ответственностью",
"email": "hhyaU@CngnE.DB"
}
Электронная подпись:
<Массив байт электронной подписи>
400 (Bad request)
error | error_description | Описание причины |
---|---|---|
invalid_request | Missing authorization header | Отсутствует обязательный параметр заголовка Authorization |
invalid_request | Incorrect authorization method | В параметре заголовка Authorization указан некорректный тип (добавить Bearer) |
- Модель
- Пример
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
{ | |||
error | string | required | Ошибка запроса |
error_description | string | required | Описание ошибки |
} |
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
{
"error": "invalid_request",
"error_description": "Missing authorization header."
}
401 (Unauthorized Error)
error | error_description | Описание причины |
---|---|---|
invalid_token | Access Token <значение полученного токена> not found | Переданный токен не найден. Например, потому что истек срок его действия или пользователь отозвал согласие на передачу данных |
- Модель
- Пример
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
{ | |||
error | string | required | Ошибка запроса |
error_description | string | required | Описание ошибки |
} |
HTTP/1.1 403 Forbidden
Content-Type: application/json;charset=UTF-8
{
"error": "invalid_token",
"error_description": "Access Token 'xbgKDVrgf756ghi789jk452DmaNKFtEpdqr678' not found."
}
403 (Forbidden)
errorCode | errorMsg | Описание причины |
---|---|---|
requestForbidden | The server configuration prohibits executing a request to the endpoint 0 | На данном сервере запрещен вызов указанного ресурса. Например, вызов ресурса /v2/oauth/token осуществляется на домен https://efs-sbbol-ift-web.testsbi.sberbank.ru:9443 , а должен осуществляться на домен https://iftfintech.testsbi.sberbank.ru:9443 |
certificateNotFound | The certificate was not whitelisted for client_id=0 | Не пройдена проверка сертификата по белому списку |
- Модель
- Пример
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
{ | |||
errorCode | string | required | Ошибка запроса |
errorMsg | string | required | Описание ошибки |
} |
HTTP/1.1 403 Forbidden
Content-Type: application/json;charset=UTF-8
{
"errorCode": "requestForbidden",
"errorMsg": "The server configuration prohibits executing a request to the endpoint {0}"
}
406 (Not acceptable)
error | error_description | Описание причины |
---|---|---|
SSOREQUESTED_FORMAT_NOT_ACCEPTABLE_EXCEPTION | JSON | В соответствии с текущими настройками платформы необходимо запрашивать ответ в формате JSON |
SSOREQUESTED_FORMAT_NOT_ACCEPTABLE_EXCEPTION | JWE Compact Serialization | В соответствии с текущими настройками платформы необходимо запрашивать ответ в формате JWE Compact Serialization |
- Модель
- Пример
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
{ | |||
error | string | required | Ошибка запроса |
error_description | string | required | Описание ошибки |
} |
HTTP/1.1 406 Not acceptable
Content-Type: application/json;charset=UTF-8
{
"error": "SSOREQUESTED_FORMAT_NOT_ACCEPTABLE_EXCEPTION",
"error_description": "JSON"
}
429 (Too Many Requests)
Cause | Message | Description |
---|---|---|
TOO_MANY_REQUESTS | Превышен лимит запросов. Повторите операцию позже. | Количество запросов к данному методу за ограниченное время превысило допустимое значение. Пользователю необходимо повторить запрос позднее |
- Модель
- Пример
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
Notice{ | |||
cause | string | optional | Причина или основание сообщения, |
referenceId | string | optional | Уникальный идентификатор ошибки (UUID), |
message | string | optional | Сообщение, |
} |
HTTP/1.1 429 Too Many Requests
Content-Type: application/json;charset=UTF-8
{
"cause": " TOO_MANY_REQUESTS ",
"referenceId": "5650c1e4-5039-4038-8cad-afab64003f61",
"message": " Превышен лимит запросов. Повторите операцию позже"
}
500 (Internal Server Error)
Cause | Message | Description |
---|---|---|
UNKNOWN_EXCEPTION | Внутренняя ошибка сервера | Сделайте повторный запрос. Если ошибка повторится, подготовьте логи запроса и направьте в службу Технической поддержки Банка. |
- Модель
- Пример
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
Notice { | |||
cause | string | optional | Причина или основание сообщения, |
referenceId | string | optional | Уникальный идентификатор ошибки (UUID), |
message | string | optional | Сообщение, |
} |
HTTP/1.1 500 Internal Server Error
Content-Type: application/json;charset=UTF-8
{
"cause": "UNKNOWN_EXCEPTION",
"referenceId": "9e209109-4b0d-408c-a2fd-e1983c20a65d",
"message": "Внутренняя ошибка сервера"
}
ID token (/user-info)
Этот токен содержит информацию о клиенте, представлен в виде JSON Web Token (JWT) и структурой:
- Алгоритм подписи и тип токена (Header);
- Полезная нагрузка (Payload);
- Электронная подпись (Signature).
Каждая часть ответа, разделенная точкой, должна декодироваться отдельно. Для декодировани я следует воспользоваться алгоритмом Base64URL Encoding.
При необходимости вы можете настроить процесс проверки подлинности данных. Для этого необходимо вычислить подпись публичным ключом Банка, декодировав блок Header и Payload (содержимое между двумя точками). Далее сравнить полученное значение c блоком Электронная подпись (содержимое после второй точки).