Важно! Запрос на регистрацию пользователя в УЦ КриптоПРО должен содержать подписанный запрос в формате 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.
В используемой ТИРом ActiveMQ, требуется создать служебную очередь CryptoPROVCplan
В настройках ТИР, в адаптере JMS, требуется настроить очередь для повторной обработки процесса. В имени очереди указать служебную очередь CryptoPROVCplan и указать имя (пример: aliasCryptoPROVCplan)
В настройках ТИР, в адаптере JMS, требуется настроить планировщик. Указать необходимы поля. В поле «Периодический запрос в формате xml» указать значение «<CheckGetUserRecordByRegRequestId/>»
Ключевые шаги
Получение списка ключевых пар, необработанных запросов на регистрацию
Выполняется запросом к БД ТИР в таблицу cpvc_SubmitRegRequests.
Запрос: SELECT * FROM cpvc_SubmitRegRequests WHERE CAID IS NULL
Формирование сообщения GetUserRecordByRegRequestId для маршрута GetUserRecordByRegRequestId
Сообщение 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 (содержит ключевые пары)
Таблица 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 на запрос Request/CryptoProCARegRequest
СообщениеResponse/CryptoProCARegResponse (целевойэлемент) | Источник |
requestId | GetUserRecordByRegRequestId/corrRequestId |
caId | xml/data/row/@UserId |