Сервис цифровой идентификации УПРИД

Сервис-адаптер для выполнения требований 115-ФЗ в части проведения упрощенной идентификации клиентов.

Сервис выполняет дополнительные подзапросы на основании поступивших в запросе данных. Он позволяет проверить данные гражданина с использованием разных сервисов-поставщиков данных и обеспечить проверку по 115-ФЗ в максимально короткие сроки.

Конфигурация сервиса

УПРИД может быть сконфигурирован в зависимости от Ваших потребностей и имеющихся доступов к ВС.

Доступные адаптеры к видам сведений для конфигурации:

Наименование адаптера Наименование ВС Потребители
pfr-snils-validation Проверка соответствия фамильно-именной группы, даты рождения, пола и СНИЛС в ПФР Все ФОИВ, все РОИВ, Банк России (в том числе поднадзорные финансовые организации, уполномоченные проводить упрощенную идентификацию). Доступ предоставляется по согласованию с СФР, необходимо направить заявку о предоставлении доступа на support@101.pfr.ru
fns-paspinn О соответствии паспортных данных и ИНН физического лица КО, УЦ
mvd-rfp-actual-full Проверка действительности паспорта (расширенная) Доступ предоставляется по согласованию с владельцем вида сведений
mvd-rfp-actual-bank Проверка действительности паспорта для банков Доступ предоставляется по согласованию с владельцем вида сведений
mvd-rfp-check Проверка действительности паспорта гражданина Российской Федерации, удостоверяющего личность гражданина Российской Федерации на территории Российской Федерации Доступ предоставляется по согласованию с владельцем вида сведений
fns-web-inn Поиск ИНН физических лиц через форму ФНС -

Конфигурация представляет строку в JSON формате массива объектов конфигурации сервисов, например:

[
  {
    "module": "mvd-rfp-actual-full",
    "name": "mvd",
    "service_name": "bedrock$$mvd-rfp-actual-full",
    "deprecation_interval": "1d"
  },
  {
    "module": "fns-paspinn",
    "name": "fns",
    "service_name": "bedrock$$fns-paspinn"
  },
  {
    "module": "pfr-snils-validation",
    "name": "pfr",
    "service_name": "bedrock$$pfr-snils-validation"
  }
]

где

Параметр Название Обязательное Пример
module Наименование модуля. Допустимые значения: mvd-rfp-actual-full, fns-paspinn, pfr-snils-validation + mvd-rfp-actual-full
name Имя сервиса, используемое в возвращаемых ответах + mvd
service_name Имя сервиса Агредатора, к которому будет направлен запрос + bedrock$$mvd-rfp-actual-full
deprecation_interval Время устаревания запроса к сервису. По умолчанию 1 неделя (в соответствии с 210-ФЗ срок подготовки ответа на межведомственный запрос составляет не более 5 рабочих дней) - 1w

Переменные окружения

Название Описание
SERVICES_CONFIG конфигурация используемых сервисов
DEPRECATION_BATCH_SIZE максимальное количество устаревающих запросов на одном шаге
DEPRECATION_SLEEP_INTERVAL промежуток времени между выполнением проверок устаревания запроса

Переменные для конфигурирования подключения к БД PostgreSQL: DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER, DATABASE_PASS.

Переменные для конфигурирования подключения к RabbitMQ: MQ_HOST, MQ_PORT, CA_CERT, CLIENT_CERT, CLIENT_KEY

Переменные для конфигурирования подключения к ELK: ELASTIC_HOST, ELASTIC_PORT, ELASTIC_METRIC_PREFIX

Принимаемые параметры

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

Параметр Название mvd
в СМЭВ3
mvd
в СМЭВ4
pfr fns Поиск
ИНН
Пример
name Имя Иван
surname Фамилия Иванов
patronymic Отчество Иванович
pass_series Серия паспорта - 1234
pass_number Номер паспорта - 123456
inn ИНН - - - - 520205004556
snils СНИЛС - - - - 152-111-22 13
birthdate Дата рождения - 1966-09-12
birthplace Место рождения - - - г. Москва
gender Пол - - - - Female
pass_issuer Орган, выдавший паспорт - - - - АРОВД
pass_issuer_date Дата выдачи паспорта - 2015-01-09
pass_issuer_code Код выдавшего подразделения - - 000-000

✅ - обязательный параметр

⭕ - необязательный параметр

тире - параметр отсутствует в запросе

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

Запрос к сервису находится в статусе waiting до поступления ответов от всех сервисов. Сообщение переходит в статус error, если все запросы завершились ошибкой. Сообщение переходит в статус success, если выполнение всех подзапросов завершилось, и хотя бы один не завершился ошибкой.

Параметр Название Обязательное Пример
fl логическое значение, определяющее выполнение требований ФЗ:
true, если были успешно проверены ФИО и паспорт и подтверждена правильность либо СНИЛС, либо ИНН
false, если проверка не прошла
null, если данных недостаточно или ответы еще не получены
   
services ответы, полученные от каждого сервиса -  
attributes хэш проверяемых параметров, с данными подтверждения сервисами -  
code Код выполнения запроса. Принимает значения:
PROCESSING - запрос обрабатывается
VALID - по переданным данным/параметрам по каждому параметру был получен хотя бы один положительный ответ
INVALID - по одному из параметров ни одна из проверок не вернула положительный результат
FAULT - запрос завершился ошибкой
Параметр требуется для совместимости с использовавшимся ранее видом сведений УПРИД
   

Структура элемента services

Параметр Название Обязательное Пример
status Статус выполнения запроса + success
message Сообщение об ошибке - Timeout error
ticket Идентификатор квитка + 01adc83a-d4a9-4a81-b8dc-7767296bfa4b
service_name Имя сервиса агредатора, обрабатывавшего запрос + pfr-snils-validation
result Результат, полученный от сервиса - {"code": "VALID"}

Совместимость с УПРИД

Формат ответа (поля) совместимы с форматом ответа использовавшегося ранее сервиса uprid3, но одновременно с этим имеет расширенную информацию по каждому запрашиваемому параметру.

При работе по HTTP-API с использованием версии протокола v0 потребуется добавить поле birthdate в поля запроса.

Примеры

Для проверки настройки сервиса можно отправить в консоли отправки панели администрирования следующий запрос:

{
  "name": "ЕЛЕНА",
  "surname": "ПЕТИНА",
  "patronymic": "ВЛАДИМИРОВНА",
  "pass_series": "7866",
  "pass_number": "123456",
  "inn": "520205004556",
  "snils": "027-733-198 62",
  "gender": "Female",
  "birthdate": "1966-09-12",
  "birthplace": "г. Москва",
  "pass_issuer": "АРОВД",
  "pass_issuer_date": "2010-10-10",
  "pass_issuer_code": "666-666"
}

В случае корректной настройки должен прийти следующий ответ (сервисы работают в тестовой среде СМЭВ 3 и для сервиса fns происходит ошибка из-за ненахождения тестового сценария):

{
  "attributes": {
    "surname": {
      "fns": false,
      "pfr": true,
      "mvd": true
    },
    "name": {
      "fns": false,
      "pfr": true,
      "mvd": true
    },
    "patronymic": {
      "fns": false,
      "pfr": true,
      "mvd": true
    },
    "inn": {
      "fns": false
    },
    "pass_series": {
      "fns": false,
      "mvd": true
    },
    "pass_number": {
      "fns": false,
      "mvd": true
    },
    "snils": {
      "pfr": true
    }
  },
  "fl": true,
  "code": "VALID",
  "services": [
    {
      "id": "1dffa9f7-49c2-4c99-9c5c-5346c4a37cd7",
      "service": "fns",
      "status": "error",
      "message": "UNKNOWN_REQUEST_DESCRIPTION: Ошибка идентификации сценария тестирования. Доступны следующие сценарии: [Тестовый сценарий 1 (//ns2:FNSPaspINNRequest/ns2:ФИО[@FamilyName='ЧАХЛОВ']), Тестовый сценарий 2 (//ns2:FNSPaspINNRequest/ns2:ФИО[@FamilyName='НЕЧАХЛОВ'])]"
    },
    {
      "id": "6f991c22-bcdf-4811-a092-670a367702c0",
      "service": "pfr",
      "status": "success",
      "result": {
        "result": true,
        "description": "Сведения соответствуют"
      }
    },
    {
      "id": "71aa61c1-db71-4fce-8829-b9a10dfb6b2d",
      "service": "mvd",
      "status": "success",
      "result": {
        "code": "VALID",
        "valid": true,
        "description": "Данные корректны"
      }
    }
  ]
}

Пример запроса с валидным запросом для fns и постепенным получением результата

Запрос

{
  "name": "ПЕТР",
  "surname": "ЧАХЛОВ",
  "patronymic": "АЛЕКСЕЕВИЧ",
  "pass_series": "1234",
  "pass_number": "123456",
  "inn": "520205004556",
  "snils": "027-733-198 62",
  "gender": "Male",
  "birthdate": "1966-09-12"
}

Цепочка получаемых ответов (здесь приведено полное содержимое payload RabbitMQ сообщения): Получен результат проверки ИНН сервисом ФНС:

{
  "attributes": {
    "surname": {
      "fns": true,
      "pfr": null,
      "mvd": null
    },
    "name": {
      "fns": true,
      "pfr": null,
      "mvd": null
    },
    "patronymic": {
      "fns": true,
      "pfr": null,
      "mvd": null
    },
    "inn": {
      "fns": true
    },
    "pass_series": {
      "fns": true
      "mvd": null
    },
    "pass_number": {
      "fns": true,
      "mvd": null
    },
    "snils": {
      "pfr": null
    }
  },
  "fl": true,
  "code": "VALID",
  "services": [
    {
      "id": "839dfad3-8f90-4e98-8968-eb531482c71f",
      "service": "fns",
      "status": "success",
      "result": {
        "code": 1
      }
    },
    {
      "id": "db2aa325-a356-455d-a787-6f2ecfb61f4a",
      "service": "pfr",
      "status": "waiting"
    },
    {
      "id": "eb82ac87-4eea-4b13-8ff1-01d4b8035fc6",
      "service": "mvd",
      "status": "waiting"
    }
  ]
}

Получен ответ от сервиса ПФР:

{
  "attributes": {
    "surname": {
      "pfr": false,
      "fns": true,
      "mvd": null
    },
    "name": {
      "pfr": false,
      "fns": true,
      "mvd": null
    },
    "patronymic": {
      "pfr": false,
      "fns": true,
      "mvd": null
    },
    "snils": {
      "pfr": false
    },
    "inn": {
      "fns": true
    },
    "pass_series": {
      "fns": true,
      "mvd": null
    },
    "pass_number": {
      "fns": true,
      "mvd": null
    }
  },
  "fl": true,
  "code": "VALID",
  "services": [
    {
      "id": "db2aa325-a356-455d-a787-6f2ecfb61f4a",
      "service": "pfr",
      "status": "error",
      "message": "UNKNOWN_REQUEST_DESCRIPTION: Ошибка проверки содержимого тестового запроса по сценарию 'Тестовый сценарий 1': следующие контрольные примеры не прошли: [//smev:FamilyName='ПЕТИНА' and //smev:FirstName='ЕЛЕНА' and //smev:Patronymic='ВЛАДИМИРОВНА' and //tns:Snils='02773319862' and //tns:Gender='Female' and //tns:BirthDate]"
    },
    {
      "id": "839dfad3-8f90-4e98-8968-eb531482c71f",
      "service": "fns",
      "status": "success",
      "result": {
        "code": 1
      }
    },
    {
      "id": "eb82ac87-4eea-4b13-8ff1-01d4b8035fc6",
      "service": "mvd",
      "status": "waiting"
    }
  ]
}

Получен ответ от сервиса МВД:

{
  "attributes": {
    "name": {
      "mvd": false,
      "pfr": false,
      "fns": true
    },
    "surname": {
      "mvd": false,
      "pfr": false,
      "fns": true
    },
    "patronymic": {
      "mvd": false,
      "pfr": false,
      "fns": true
    },
    "pass_series": {
      "mvd": false,
      "fns": true
    },
    "pass_number": {
      "mvd": false,
      "fns": true
    },
    "snils": {
      "pfr": false
    },
    "inn": {
      "fns": true
    }
  },
  "fl": true,
  "code": "VALID",
  "services": [
    {
      "id": "eb82ac87-4eea-4b13-8ff1-01d4b8035fc6",
      "service": "mvd",
      "status": "error",
      "message": "UNKNOWN_REQUEST_DESCRIPTION: Ошибка идентификации сценария тестирования. Доступны следующие сценарии: [Тестовый сценарий 3 (1.2.0) (//ns:passportValidityExtendedRequest//bt:series='7844'), Тестовый сценарий 2 (1.2.0) (//ns:passportValidityExtendedRequest//bt:series='7801'), Тестовый сценарий 1 (1.2.0) (//ns:passportValidityExtendedRequest//bt:series='7866')]"
    },
    {
      "id": "db2aa325-a356-455d-a787-6f2ecfb61f4a",
      "service": "pfr",
      "status": "error",
      "message": "UNKNOWN_REQUEST_DESCRIPTION: Ошибка проверки содержимого тестового запроса по сценарию 'Тестовый сценарий 1': следующие контрольные примеры не прошли: [//smev:FamilyName='ПЕТИНА' and //smev:FirstName='ЕЛЕНА' and //smev:Patronymic='ВЛАДИМИРОВНА' and //tns:Snils='02773319862' and //tns:Gender='Female' and //tns:BirthDate]"
    },
    {
      "id": "839dfad3-8f90-4e98-8968-eb531482c71f",
      "service": "fns",
      "status": "success",
      "result": {
        "code": 1
      }
    }
  ]
}

Набор HTTP запросов

Файл набора HTTP запросов - это файл, созданный в приложении Postman, который содержит набор HTTP запросов, ответов и сопутствующей информации, связанной с тестированием API.

Коллекция в Postman обычно включает в себя следующую информацию:

  1. HTTP запросы: GET, POST, PUT, DELETE и другие типы запросов.
  2. Параметры запросов: параметры пути, параметры запроса, тело запроса, заголовки запроса и другие параметры.
  3. Ожидаемые ответы: коды ответов, тела ответов и заголовки ответов.
  4. Тесты: наборы скриптов, которые используются для проверки правильности ответов на запросы.
  5. Переменные: значения переменных, которые могут использоваться в разных запросах, чтобы избежать повторений.

УПРИД может быть сконфигурирован в зависимости от Ваших потребностей и имеющихся доступов к ВС. Ниже представлены наборы HTTP запросов для текущих конфигураций, а также для каждого сервиса, входящего в конфигурации.

Конфигурация Файл набора HTTP запросов для конфигурации
digital-identity Загрузить файл с набором HTTP запросов
digital-identity-ex Загрузить файл с набором HTTP запросов
digital-identity-ko Загрузить файл с набором HTTP запросов
digital-identity-4 Загрузить файл с набором HTTP запросов
Наименование адаптера Буквенный код сервиса Файл набора HTTP запросов для конфигурации
Проверка соответствия фамильно-именной группы, даты рождения, пола и СНИЛС в ПФР pfr-snils-validation Загрузить файл с набором HTTP запросов
Сведения о соответствии паспортных данных и ИНН физического лица fns-paspinn Загрузить файл с набором HTTP запросов
Проверка соответствия фамильно-именной группы, даты рождения, пола и СНИЛС в ПФР pfr-snils-validation Загрузить файл с набором HTTP запросов
Проверка действительности паспорта (расширенная) mvd-rfp-actual-full Загрузить файл с набором HTTP запросов
Проверка действительности паспорта для банков mvd-rfp-actual-bank Загрузить файл с набором HTTP запросов
Проверка действительности паспорта гражданина Российской Федерации, удостоверяющего личность гражданина Российской Федерации на территории Российской Федерации mvd-rfp-check Загрузить файл с набором HTTP запросов
Поиск ИНН физических лиц через форму ФНС fns-web-inn Загрузить файл с набором HTTP запросов