Импорт учетной записи пользователя

Импорт учетной записи пользователя

Общие сведения

Сервис импорта учетной записи пользователя ЕСИА обеспечивает возможность проверки наличия учетной записи пользователя, а в случае её отсутствия – регистрации пользователя в ЕСИА. При обнаружении стандартной учетной записи (учетной записи, готовой к подтверждению) сервис производит подтверждение учетной записи. Алгоритм работы сервиса представлен на рисунке ниже:

Получение доступа к сервису

Доступ к сервису имеют исключительно доверенные организации, обеспечивающие подтверждение личности при предоставлении своих услуг пользователям. Например, сервис может быть предоставлен банкам для самостоятельной регистрации пользователя из его учетной записи интернет-банка. В этом случае банк должен гарантировать, что передаваемые пользователем данные – фамилия, имя, отчество и паспортные данные – принадлежат именно пользователю, инициирующему регистрацию.
Технически доступ к сервису имеют системы, получившие возможность получать маркеры доступа на разрешение (scope) типа ext_imp.

Конфигурирование ESIA-Bridge

Для включения функции регистрации в ESIA-Bridge необходимо внести следующие изменения в конфигурационный файл ESIA-Bridge.conf:

    1. Указать корректное значения параметра esia.host – домена среды ЕСИА, в которую будет осуществляться импорт. Возможны следующие значения:
      • esia-portal1.test.gosuslugi.ru – тестовая среда ЕСИА;
      • esia.gosuslugi.ru – продуктивная среда ЕСИА.
    2. Указать корректные настройки электронной подписи ИС, используемой для взаимодействия с ЕСИА, согласно п. 2.4.1 данного документа.
    3. Добавить в раздел oauth/client конфигурационного файла новый блок следующего вида:
reg {
            requested_scopes = "http://esia.gosuslugi.ru/ext_imp",
        licenseKey = "811301161|1488574800|U2Ac1SsJp+eHNOs2fbsnLKbzUCFsat+tLxuOxurcwtBnd3F0DPDi5lQuHdinerjFfv6M2ONhscQgdMOvM/w/2Q=="
    }

В этом блоке используются параметры:

  • requested_scope — запрашиваемый системой scope для операции импорта (по умолчанию – ext_imp);
  • licenseKey – лицензия, позволяющая системе вызывать сервис регистрации.
После добавления этого блока с валидной лицензией будет доступен сервис регистрации пользователей.

Поскольку при вызове сервиса не проводится авторизация вызывающей системы, то адрес сервиса <hostname>/blitz/bridge/reg следует сделать доступным исключительно для системы, осуществляющей вызов – например, для системы интернет-банкинга.

Вызов сервиса

Для вызова сервиса следует направить HTTP-запрос методом PUT на адрес /blitz/bridge/reg. В заголовке (http header) необходимо указать параметр “Content-Type” со значением “application/json”.
В теле (body) запроса необходимо указать параметры пользователя, которые включают в себя атрибуты регистрируемого пользователя в виде json:

  • «firstName» – имя;
  • «lastName» – фамилия;
  • «middleName» – отчество;
  • «birthDate» – дата рождения в формате ДД.ММ.ГГГГ;
  • «gender» – пол (M – мужской, F – женский);
  • «birthPlace» – место рождения;
  • «citizenship» – гражданство (по умолчанию RUS для России, можно не указывать);
  • «snils» – СНИЛС (в формате ХХХ-ХХХ-ХХХ ХХ);
  • «passport» – данные паспорта, включают в себя:
    • «type» – тип документа (по умолчанию имеет значение “RF_PASSPORT”, можно не указывать);
    • «series» – серия;
    • «number» – номер;
    • «issueDate» – дата выдачи в формате ДД.ММ.ГГГГ;
    • «issueId» – код подразделения;
    • «issuedBy» – кем выдан;
  • «mobile» – мобильный телефон пользователя; включает в себя:
    • «value» – значение (в формате +7(ХХХ)ХХХХХХХ);
  • «email» – адрес электронной почты пользователя (не обязательно); включает в себя:
    • «value» – значение;
  • «liveAddress» – адрес места проживания (не обязательно); включает в себя:
    • «fiasCode» – код ФИАС;
    • «addressStr» – адрес в виде строки;
    • «zipCode» – индекс;
    • «countryId» – идентификатор страны, для России принимает значение «RUS»;
    • «region» – регион;
    • «city» – город;
    • «district» – внутригородской район;
    • «area» – район;
    • «settlement» – поселение;
    • «additionArea» – доп. территория;
    • «additionAreaStreet» – улица на доп. территории;
    • «street» – улица;
    • «house» – дом;
    • «building» – строение;
    • «frame» – корпус;
    • «flat» – квартира.
  • «registerAddress» – адрес регистрации (не обязательно); включает в себя те же параметры, что и адрес места проживания.
Пример запроса:

PUT https://<ESIA_BRIDGE_HOST>/blitz/bridge/reg
Content-Type: application/json
{
"firstName":"Иван",
"lastName":"Иванов",
"middleName":"Иванович",
"birthDate":"01.01.1999",
"birthPlace":"Москва",
"gender":"M",
"snils":"000-000-001 89",
"mobile": {"value": "+7(888)9999999"},
"email":  {"value": "test@test.st"},
"passport":{
    "series":"9999",
    "number":"889999",
    "issueId":"111001",
    "issuedBy":"РУВД г.Москвы",
    "issueDate":"18.03.2016"
},
"liveAddress":{
        "addressStr":"Кемеровская Область, Таштагольский Район, Шерегеш Поселок городского типа",
        "countryId": "RUS",
        "zipCode": "394000",
        "region":"Кемеровская Область",
        "area": "Таштагольский Район",
        "city":"Шерегеш Поселок городского типа",
        "district": "нет",
        "settlement":"Усть-Анзас Поселок",
        "street": "Советская Улица",
        "additionArea":"Регион Садовое неком-е товарищество",
        "additionAreaStreet":"Тест",
        "house": "86/1",
        "building": "e",
        "frame": "204у",
        "flat":"пом.419",
        "fiasCode":"77-0-000-000-000-000-4236-0000-000"
    },
"registerAddress":{
        "addressStr":"Кемеровская Область, Таштагольский Район, Шерегеш Поселок городского типа",
        "countryId": "RUS",
        "zipCode": "394000",
        "region":"Кемеровская Область",
        "area": "Таштагольский Район",
        "city":"Шерегеш Поселок городского типа",
        "district": "нет",
        "settlement":"Усть-Анзас Поселок",
        "street": "Советская Улица",
        "additionArea":"Регион Садовое неком-е товарищество",
        "additionAreaStreet":"Тест",
        "house": "86/1",
        "building": "e",
        "frame": "204у",
        "flat":"пом.419",
        "fiasCode":"77-0-000-000-000-000-4236-0000-000"
    }
}

Возможны следующие варианты ответа сервиса:

Пример ответа сервиса
Описание
Рекомендация
{"code":"1","description":"Person successfully confirmed as trusted in ESIA"}
Найдена стандартная (готовая к подтверждению) учетная запись) и она была успешно подтверждена
Сообщить пользователю об успешном подтверждении учетной записи
{"requestId":"AAAA13E94240654","code":"2","description":"Request to register person as trusted in ESIA has been accepted successfully."} 
Учетная запись не найдена и создана заявка на регистрацию учетной записи. Возвращен идентификатор заявки (requestId)
Перейти к проверке статуса заявки на регистрацию пользователя (например, чтобы визуализировать ход регистрации в вызывающей системе)
{  "requestId": "AAAA25CFDE1929F9615A26F67
DD66DDB164247CEF0871208C3E0", "warning": "The specified mobile will be assigned to the user but it is very likely this mobile will not be verified because it is associated with another user account.", "code": "2", "description": "Request to register person as trusted in ESIA has been accepted successfully."}
Учетная запись не найдена и создана заявка на регистрацию учетной записи. Возвращен идентификатор заявки (requestId). Предупреждение, что мобильный телефон занят (первый вход в ЕСИА должен быть сделан по СНИЛС в качестве логина)
Перейти к проверке статуса заявки на регистрацию пользователя (например, чтобы визуализировать ход регистрации в вызывающей системе)
{"code":"0","description":"Person already has trusted account in ESIA"}
Найдена подтвержденная учетная запись и никакого действия не совершено Сообщить пользователю, что у него уже имеется подтвержденная учетная запись
{"code":"ESIA-03200","description":"Import account error. Person have to check entered data or fill in the data in his account in ESIA."}
Данные запроса не совпадают с теми, что обнаружены в ЕСИА (например, учетная запись на данный СНИЛС имеется, но у этой учетной записи другой номер мобильного телефона)
Направить пользователя в его Профиль пользователя ЕСИА, чтобы проверить данные (например, указать тот же номер мобильного телефона, который задан у него в системе интернет-банкинга
{"code":"ESIA-036102","message":"Введенный СНИЛС не существует"}
{"code":"ESIA-032202","message":"Номер мобильного телефона указан в неверном формате"}
{"code":"ESIA-033100","message":"Серия паспорта должна состоять из 4 цифр"}
Ошибка в данных запроса
Проверить, что данные из вызывающей системы передаются в корректном формате. Если речь идет о редактируемом поле, то можно рекомендовать пользователю изменить значение атрибута

Проверка статуса заявки на регистрацию пользователя

Для вызова сервиса проверки статуса заявки следует направить HTTP-запрос методом GET на адрес /blitz/bridge/req с query-параметром req_id, равным идентификатору заявки. Пример запроса:

GET https:///blitz/bridge/req?req_id=AAAAA4E84240654F9D0E46BC8A0D51AD HTTP/1.1

В качестве ответа сервис вернет статус исполнения заявки на регистрацию учетной записи. В ответе ключевым является параметр status, принимающий значения:

  • VALIDATING – идет проверка данных учетной записи в ПФР или ФМС России;
  • VALIDATION_FAILED – ошибка при проверке данных учетной записи в ПФР или ФМС России, детализация ошибки содержится в параметре flowDetails;
  • CONFIRMATION_FAILED – ошибка при создании подтвержденной учетной записи в ЕСИА, детализация ошибки содержится в параметре flowDetails;
  • SUCCEEDED– операция успешно выполнена.

Параметр flowDetails включает в себя, в частности, код ошибки (code) и ее описание (message). Среди возможных ошибок:

  • ESIA-910001 – Сервис Пенсионного фонда РФ не подтвердил соответствие СНИЛС и введенных данных;
  • ESIA-910100 – Сервис Федеральной миграционной службы РФ не подтвердил соответствие данных документа, удостоверяющего личность, и введенных данных.

Пример ответа при успешной регистрации учетной записи:

{  
   "stateFacts":[  
      "Identifiable"
   ],
   "status":"SUCCEEDED",
   "flowDetails":[  
      {  
         "name":"validateSnils",
         "status":"S"
      }
   ]
}

Пример ответа при ошибке:

{  
   "stateFacts":[  
      "Identifiable"
   ],
   "status":"VALIDATION_FAILED",
   "flowDetails":[  
      {  
         "name":"validateSnils",
         "status":"F",
         "error":{  
            "code":"ESIA-910001",
            "message":"Пенсионный фонд Российской Федерации не подтвердил существование СНИЛС с указанными реквизитами"
         }
      }
   ],
   "errorStatusInfo":{  
      "code":"ESIA-910001",
      "message":"Пенсионный фонд Российской Федерации не подтвердил существование СНИЛС с указанными реквизитами"
   }
}

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

Мы используем файлы cookie, чтобы улучшить работу сайта и предоставить пользователям больше возможностей. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie.
Принять