Асинхронная подпись
REST API v2 Сервиса подписи поддерживает режим "асинхронной подписи".
Примечание
"Асинхронная подпись" поддерживается поддерживается только для операции подписи, выполняемой с подтверждением (myDSS, DSS SDK, OTP-via-SMS, OTP-via-Email и т.п).
В режиме "асинхронной подписи" отправит 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
}
}