/si-authorize

Назначение

Метод позволяет инициировать аутентификацию конечного пользователя с использованием взаимодействия сервер-сервер.

При успешном вызове метода запросу будет присвоен уникальный идентификатор, а результаты аутентификации пользователя будут переданы сервис-провайдеру асинхронно, с помощью отдельного ответного вызова.

Запрос

МетодPOST
Endpointhttps://idgw.mobileid.mts.ru/oidc/si-authorize
АвторизацияНет

Заголовки

ПараметрОписаниеПример
Content-TypeТип передаваемого контента. Поддерживается application/jsonapplication/json

Параметры

ПараметрОписаниеОбязательныйПример
client_idИдентификатор ресурса СП. Выдаётся при регистрации в сервисе Мобильный IDДаmts_test_service
response_typeСценарий обработки запроса. Единственное допустимое значение — «mc_si_async_code»Даmc_si_async_code
scopeСписок областей данных с разделителями-пробелами. Значение должно содержать openid и дополнительный набор областей в зависимости от подключённого тарифаДаopenid mc_authn
requestОбъект, закодированный как строка JWT и подписанный с помощью приватного ключа отправителя (см. Как сформировать request?)ДаeyJ0eXAiOiUzI1pZCI6InJzYTEifQ...gWw

Пример запроса

POST https://idgw.mobileid.mts.ru/oidc/si-authorize
Content-Type: application/json

{
  "client_id": "mts_test_service",
  "response_type": "mc_si_async_code",
  "scope": "openid mc_authn",
  "request": "eyJ0eXAiOiUzI1pZCI6InJzYTEifQ...gWw"
}

Успешный ответ

Заголовки

ПараметрОписаниеПример
Content-TypeТип передаваемого контента. Всегда application/jsonapplication/json
X-Mobileid-Request-IdУникальный идентификатор запроса. Используется в рамках оказания технической поддержки0a1f42a5307e6d7435b6a20a1cbf8c78
X-Mobileid-Transaction-IdУникальный идентификатор транзакции. Используется в рамках оказания технической поддержки0b4f8e2d-2040-4e65-b404-055af6625e7e

Параметры

ПараметрОбязательныйОписаниеПример
auth_req_idДаИдентификатор запроса аутентификации932eb8e1-cc0c-4b95-9962-d89dabad4711
expires_inДаЦелое число, показывающее время «жизни» транзакции в секундах140
correlation_idНетУникальный сквозной идентификатор для всех транзакций пользователя. Возвращается в случае, если одноимённый параметр был использован в исходном запросе. Значение совпадает с переданным в исходном запросе05c4ac02-9144-411c-9279-166ac637528f
hhe_uriНетHTTP-ресурс, к которому сервис-провайдер должен обеспечить выполнение GET-запроса с устройства пользователя. Возвращается в случае, если сценарий предусматривает аутентификацию пользователя с использованием Seamlesshttp://idgw.mobileid.mts.ru/oidc/hhe/si?correlation_id=ea04099a-31a0-4b54-be1c-241f38074da2

Пример успешного ответа

HTTP 200
Content-Type: application/json
X-Mobileid-Request-Id: 0a1f42a5307e6d7435b6a20a1cbf8c78
X-Mobileid-Transaction-Id: 0b4f8e2d-2040-4e65-b404-055af6625e7e

{
  "auth_req_id": "932eb8e1-cc0c-4b95-9962-d89dabad4711",
  "expires_in": 140,
  "correlation_id": "05c4ac02-9144-411c-9279-166ac637528f",
  "hhe_uri": "http://idgw.mobileid.mts.ru/oidc/hhe/si?correlation_id=ea04099a-31a0-4b54-be1c-241f38074da2"
}

Сообщения об ошибках

Заголовки

ПараметрОписаниеПример
Content-TypeТип передаваемого контента. Всегда application/jsonapplication/json
X-Mobileid-ErrorКатегория ошибкиinvalid_request
X-Mobileid-Request-IdУникальный идентификатор запроса. Используется в рамках оказания технической поддержки0a1f42a5307e6d7435b6a20a1cbf8c78

Параметры

ПараметрОбязательныйОписаниеПример
errorДаКатегория ошибкиinvalid_request
error_descriptionДаОписание ошибкиinvalid authorization code

Пример ответа с ошибкой

HTTP 400
Content-Type: application/json
X-Mobileid-Request-Id: 0a1f42a5307e6d7435b6a20a1cbf8c78
X-Mobileid-Error: invalid_request

{
  "error": "invalid_request",
  "error_description": "unable to verify request object"
}

Негативные сценарии и используемые значения error и error_description

СценарийHTTP-кодErrorError_description
Отсутствует обязательный скоуп (openid)400invalid_requestinvalid request parameter "scope"
Параметр «scope» отсутствует или имеет пустое значение400invalid_requestrequired parameter "scope" is missing or empty
Не валидное значение параметра «scope» или запрашиваемый scope не разрешён для учётной записи400invalid_scoperequired scope "%scope_value%" are not allowed
Параметр «scope» не совпадает в запросе и request400invalid_requestmalformed request, ambiguous values of the "scope" parameter
Параметр «client_id» отсутствует или содержит пустое значение400invalid_requestrequired parameter "client_id" is missing or empty
Не валидное значение параметра «client_id»400invalid_requestthe client is not found by client_id "%client_id_value%"
Параметр «client_id» не совпадает в запросе и request400invalid_requestmalformed request, ambiguous values of the "client_id" parameter
Параметр «response_type» отсутствует или имеет пустое значение400invalid_requestrequired parameter "response_type" is missing or empty
Не валидное значение параметра «response_type»400invalid_requestinvalid request parameter "response_type"
Параметр «response_type» не совпадает в запросе и request400invalid_requestmalformed request, ambiguous values of the "response_type" parameter
Параметр «request» отсутствует или имеет пустое значение400invalid_requestrequired parameter "request" is missing or empty
Не валидное значение параметра «request» или не удалось проверить подпись400invalid_requestunable to verify request object
Параметр «version» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "version" is missing or empty
Параметр «nonce» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "nonce" is missing or empty
Параметр «iss» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "iss" is missing or empty
Не валидное значение параметра «iss» в составе значения параметра request400invalid_requestinvalid request parameter "iss"
Параметр «aud» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "aud" is missing or empty
Не валидное значение параметра «aud» в составе значения параметра request400invalid_requestinvalid request parameter "aud"
Параметр «notification_uri» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "notification_uri" is missing or empty
Не валидное значение параметра «notification_uri» в составе значения параметра request400invalid_requestinvalid request parameter "notification_uri"
Параметр «acr_values» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "acr_values" is missing or empty
Не валидное значение параметра «acr_values» в составе значения параметра request400invalid_requestinvalid request parameter "acr_values"
Параметр «client_notification_token» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "client_notification_token" is missing or empty
Параметр «login_hint» в составе значения параметра request отсутствует или имеет пустое значение400invalid_requestrequired parameter "login_hint" is missing or empty
Не валидное значение параметра «login_hint»400invalid_requestinvalid request parameter "login_hint"
Не удалось определить оператора по MSISDN400access_deniedunknown mobile network operator
MSISDN принадлежит оператору, с которым у сервис-провайдера нет интеграции400access_deniedclient is not registered for mobile network operator
MSISDN принадлежит оператору, не поддерживающему Мобильный ID400access_deniedunsupported mobile network operator
Для MSISDN есть незавершённая транзакция403access_deniedthe user is busy with another transaction
Параметр «challenge_text» в составе значения параметра request отсутствует или имеет пустое значение. Проверяется при оказании услуги «авторизация» — scope: openid mc_authz400invalid_requestrequired parameter challenge_text is missing or empty
Не удалось определить MSISDN по PCR, переданному в «login_hint»access_denieduser is not registered
Для учётной записи не заведена пара private/public key для расшифровки ENCR_MSISDNaccess_deniedenc msisdn private key is not set

Связанные методы