Регистрация пользователя в УЦ КриптоПРО

Важно! Запрос на регистрацию пользователя в УЦ КриптоПРО должен содержать подписанный запрос в формате ProfileAttributesChange и закодированный в base64. Всё это формируется только на стороне Correqts. В ТИР нет функционала формирования подписи запроса!

CryptoProCARegRequest – обработка входящих сообщений из Correqts (Request/CryptoProCARegRequest – запрос на регистрацию пользователя в УЦ КриптоПРО). Сохранение в служебной таблице cpvc_SubmitRegRequests ключевой пары ID запроса из Correqts и ID запроса на регистрацию пользователя в УЦ КриптоПРО. Важно, для корректной работы маршрута необходимо в его настройках указать идентификатор папки в УЦ КриптоПРО. Маршрут вызывает метод УЦ SubmitRegRequest, передавая в него подписанный запрос в параметр rawRequest.

Ключевые шаги

Метод SubmitRegRequest (целевой элемент) Запрос Request/CryptoProCARegRequest (источник)
folderId Значение настройки маршрута FolderID
rawRequest Request/CryptoProCARegRequest/Request
notificationEmail (пустая строка)
keyPhrase Константа «key»
description Значение настройки маршрута description
userComment Значение настройки маршрута userComment

Важно! При вызове метода (веб-сервиса) УЦ необходимо устанавливать заголовок, в котором указать параметр SOAPAction равный значению «http://cryptopro.ru/pki/registration/service/2010/03/RegAuthLegacyContract/SubmitRegRequest»

Таблица cpvc_SubmitRegRequests (целевой элемент) Источник
corrRequestId Request/CryptoProCARegRequest/requestId
CRYPTOREQEXTID SubmitRegRequestResponse/SubmitRegRequestResult

Скрипт: INSERT INTO cpvc_SubmitRegRequests (corrRequestId, CRYPTOREQEXTID) VALUES (:corrRequestId, :CRYPTOREQEXTID)

CheckGetUserRecordByRegRequestId – служебный маршрут. Данный маршрут проверяет наличие не обработанной ключевой пары из таблицы cpvc_SubmitRegRequests, ранее записанной маршрутом CryptoProCARegRequest и формирует сообщение для маршрута GetUserRecordByRegRequestId. В данном сообщении содержится ключевая пара:

<?xml version="1.0" encoding="UTF-8"?>

<GetUserRecordByRegRequestId>

<corrRequestId>016cfbb1-d76c-1253-9ffe-823881f280ee</corrRequestId>

<regRequestId>974ae64f-dcfa-4a28-9270-aaee006af669</regRequestId>

</GetUserRecordByRegRequestId>

где

GetUserRecordByRegRequestId/corrRequestId – идентификатор запроса на регистрацию в Correqts, это CryptoProCARegRequest/requestId.

GetUserRecordByRegRequestId/regRequestId – идентификатор запроса на регистрацию из УЦ, полученного в ответе SubmitRegRequestResponse/SubmitRegRequestResult.

Для работы маршрута требуется выполнить конфигурирование системы ТИР/ActiveMQ.

  1. В используемой ТИРом ActiveMQ, требуется создать служебную очередь CryptoPROVCplan

  2. В настройках ТИР, в адаптере JMS, требуется настроить очередь для повторной обработки процесса. В имени очереди указать служебную очередь CryptoPROVCplan и указать имя (пример: aliasCryptoPROVCplan)

    Нажмите для масштабирования
  3. В настройках ТИР, в адаптере JMS, требуется настроить планировщик. Указать необходимы поля. В поле «Периодический запрос в формате xml» указать значение «<CheckGetUserRecordByRegRequestId/>»

    Нажмите для масштабирования

Ключевые шаги

Выполняется запросом к БД ТИР в таблицу cpvc_SubmitRegRequests.

Запрос: SELECT * FROM cpvc_SubmitRegRequests WHERE CAID IS NULL

Сообщение GetUserRecordByRegRequestId (целевой элемент) Запись в таблице cpvc_SubmitRegRequests (источник)
corrRequestId corrRequestId
regRequestId CRYPTOREQEXTID

GetUserRecordByRegRequestId – служебный маршрут для формирования ответа Response/CryptoProCARegResponse на запрос Request/CryptoProCARegRequest. При поступлении в маршрут сообщения GetUserRecordByRegRequestId, содержащего ключевую пару, выполняется запрос статуса запроса, методом УЦ GetRegRequestRecord. Входящий параметр regRequestId содержит идентификатор запроса в УЦ на регистрацию пользователя. После вызова метода УЦ GetRegRequestRecord, выполняется анализ полученных данных содержащихся в GetRegRequestRecordResponse/GetRegRequestRecordResult. В данном теге содержится XML, которая содержит информацию о состоянии запроса на регистрацию. Ключевым к анализу является атрибут xml/data/row/@Status. Если атрибут содержит значения «C» или «K», то считается, что запрос на регистрацию успешно обработан в УЦ. Если запрос успешно обработан, то выполняется вызов метода GetUserRecordByRegRequestId, получение идентификатора пользователя в УЦ. Иначе, маршрут останавливает дальнейшую работу. В случае успешного вызова метода GetUserRecordByRegRequestId в ответе GetUserRecordByRegRequestIdResponse/GetUserRecordByRegRequestIdResult будет содержаться набор данных в виде XML в котором будет содержаться идентификатор пользователя в УЦ. Идентификатор забираем из атрибута xml/data/row/@UserId. После успешного получения идентификатора пользователя в УЦ, маршрут выполняет обновление данных в таблице cpvc_SubmitRegRequests (сохраняя идентификатор пользователя для ключевой пары) и формирует ответное сообщение для Correqts.

Ключевые шаги

Метод GetRegRequestRecord (целевой элемент) Запрос GetUserRecordByRegRequestId (источник)
regRequestId regRequestId
selectColumns (пустая строка)

Важно! При вызове метода (веб-сервиса) УЦ необходимо устанавливать заголовок, в котором указать параметр SOAPAction равный значению «http://cryptopro.ru/pki/registration/service/2010/03/RegAuthLegacyContract/GetRegRequestRecord»

Выполняет проверку полученного значения из результирующего сообщения.

Результирующее сообщение получаем из ответа GetUserRecordByRegRequestIdResponse/GetUserRecordByRegRequestIdResult

Проверка статуса: xml/data/row/@Status = «C» или xml/data/row/@Status = «K»

Если условие выполняется, то выполняем дальнейшую работу маршрута.

Метод GetUserRecordByRegRequestId (целевой элемент) Запрос GetUserRecordByRegRequestId (источник)
regRequestId regRequestId
selectColumns (пустая строка)

Важно! При вызове метода (веб-сервиса) УЦ необходимо устанавливать заголовок, в котором указать параметр SOAPAction равный значению «http://cryptopro.ru/pki/registration/service/2010/03/RegAuthLegacyContract/SubmitRegRequest»

Таблица cpvc_SubmitRegRequests (целевой элемент) Источник
corrRequestId GetUserRecordByRegRequestId/corrRequestId
CRYPTOREQEXTID GetUserRecordByRegRequestId/regRequestId
CAID xml/data/row/@UserId

Скрипт: UPDATE cpvc_SubmitRegRequests SET CAID = :CAID WHERE corrRequestId = :corrRequestId AND CRYPTOREQEXTID = :CRYPTOREQEXTID

СообщениеResponse/CryptoProCARegResponse (целевойэлемент) Источник
requestId GetUserRecordByRegRequestId/corrRequestId
caId xml/data/row/@UserId