Асинхронная подпись
REST API v2 Сервиса подписи поддерживает режим "асинхронной подписи".
В режиме "асинхронной подписи" DSS отправит Callback в вызывающую систему после того как документы будут подписаны и загружены в хранилище документов.
После получения Callback вызывающая система может выгрузить подписанные документы из хранилища документов.
Настройка асинхронной подписи
Включение режима асинхронной подписи
По умолчанию режим асинхронной подписи отключен на сервисе подписи. Для его включения необходимо выполнить команду в консоли PowerShell
Enable-DssAsyncOperationSettings
Настройка модуля для отправки Callback
Для регистрации модуля необходимо выполнить следующий скрипт:
#Настройка транспортного плагина
$plugin = Add-DssSignServerPlugin -PluginTypeName "CryptoPro.DSS.Identity.Authentication.Notification.HttpTransportPlugin,CryptoPro.DSS.Identity.Authentication.Notification" -PluginType AuthenticationResult -Settings @{}
#Добавление модуля оповещения
Add-DssSignServerNotifier -TransportPluginID $plugin.ID -NotifierType AuthenticationResultCallback -Settings @{} -Type "CryptoPro.DSS.Identity.Authentication.Notification.AuthenticationResultNotifier,CryptoPro.DSS.Identity.Authentication.Notification"
При успешной регистрации в списке зарегистрированных модулей оповещения Сервиса Подписи будет модуль с типом AuthenticationResultCallback
:
Get-DssSignServerNotifier
ID : 6
Type : AuthenticationResultCallback
Settings : {[ThreadCount, 1]}
IsEnabled : True
TransportPlugin : CryptoPro.DSS.PowerShell.Common.Objects.Plugin
MessagePlugin :
Создание подписи в асинхронном режиме
Последовательность шагов при подтверждение операции подписи в асинхронном режиме:
- Аутентификация пользователя на Центре Идентификации
- Загрузка документов для подписи
- Создание операции подписи на Сервисе Подписи
- Отправка запроса на подтверждение операции подписи
- Ожидание подтверждения операции в DSS SDK и подписи документов
- Выгрузка подписанного документа
На шаге 3 для создания подписи с подтверждением в асинхронном режиме необходимо в вызове Signature передать дополнительные параметры:
IsAsync
- trueCallback
- URL-адрес для оповещения о заверщении операции подписи
Пример запроса
{
"BinaryData": [{
"RefId" : "37bcc23f-73d8-4cb9-8b54-9b47ad03fd52"
}],
"Signature" :
{
"CertificateId": "13",
"ProcessingTemplateId": "1"
},
"IsAsync":"true",
"Callback":"http://hostname/signresult"
}
На шаге 5 Сервис Подписи отправит Callback следующего формата:
{
"Operation": {
"Id": "6ec9d54a-7f4d-4579-abe9-660ce241e185",
"Result": {
"ProcessedDocuments": [
{
"RefId": "f7dbd740-9fad-4aea-88a7-39dfcc81c0ab",
"OriginalRefId": "37bcc23f-73d8-4cb9-8b54-9b47ad03fd52",
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 1582121878
}
}