Асинхронная подпись
REST API v2 Сервиса Подписи поддерживает режим "асинхронной подписи".
Примечание
"Асинхронная подпись" поддерживается только для операции подписи, выполняемой с подтверждением (myDSS, DSS Client (DSS SDK), OTP-via-SMS, OTP-via-Email и т.п).
В режиме "асинхронной подписи" 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 :
Настройка групп доступности
Если на Сервисе Подписи включена поддержка асинхронной подписи, то при запуске экземпляра Сервиса Подписи запускается обработчик очереди запросов на подпись.
Обработчик очереди работает все время, пока запущены процессы Сервиса Подписи. В ряде случаев такое поведение может быть нежелательным. Например:
Сервер, на котором развернут экземпляр Сервиса Подписи, может быть временно выведен из эксплуатации и не должен принимать или обрабатывать запросы подписи. Одним из вариантов решения может быть остановка сервера приложений IIS или только пула приложений Сервиса Подписи.
КриптоПро DSS развернут в кластере. Кластер может быть настроен так, что активно в каждый момент времени только одно плечо кластера, в то время как второе находится в ожидании.
Для включения и отключения обработчиков очереди запросов на подпись можно использовать командлеты, входящие в PowerShell модуль Сервиса Подписи:
Get-DssSignQueueAvailabilityGroup
Set-DssSignQueueAvailabilityGroup
Enable-DssSignQueueAvailabilityGroup
Disable-DssSignQueueAvailabilityGroup
Switch-DssSignQueueAvailabilityGroup
Команды позволяют объединить экземпляры Сервисов Подписи в группы доступности для возможности включения/отключения обработчиков очереди запросов на подпись.
Примечание
Команды могут выполняться на любом из узлов кластера. Команды не требуют указания параметра DisplayName
, так как они изменяют общие настройки DSS,
не связанные с каким-либо конкретным экземпляром Сервиса Подписи.
Примечание
После внесения изменений в настройки очередь запросов на подпись автоматически меняет свое состояние в течение 3-х секунд (переходит в активное или неактивное состояние).
Выполнение команды Restart-DssSignServerInstance
не требуется.
Команда Get-DssSignQueueAvailabilityGroup
позволяет просмотреть сведения обо всех экземплярах Сервиса Подписи на всех серверах или на указанном сервисе.
Команда выводит следующие сведения об экземплярах:
Id
- идентификатор экземпляра в группе доступности;GroupId
- идентификатор группы доступности;IsEnabled
- состояние очереди;ServerName
- имя сервера, на котором размещен экземпляр;DisplayName
- отображаемое имя экземпляра.
Примечание
Если в команде указать параметр ServerName
, то вывод будет содержать только
информацию об экземплярах на эказанном сервере.
Примечание
Параметр ServerName
поддерживает подсказки значений имен серверов.
Достаточно набрать имя параметра и с помощью TAB пролистать
список имен серверов.
Пример 1
Get-DssSignQueueAvailabilityGroup
Id : 1
GroupId : 1
IsEnabled : True
ServerName : ATLASDSS1
Displayname : atlasdss
Id : 2
GroupId : 2
IsEnabled : True
ServerName : ATLASDSS2
Displayname : atlasdss
Пример 2
Get-DssSignQueueAvailabilityGroup -ServerName ATLASDSS1
Id : 1
GroupId : 1
IsEnabled : True
ServerName : ATLASDSS1
Displayname : atlasdss
Для включения экземпляра Сервиса Подписи в группу доступности используется командлет Set-DssSignQueueAvailabilityGroup
.
В параметрах команды необходимо указать назначаемый идентификатор группы доступности GroupId
.
Группа доступности назначается либо указанному экземпляру Сервиса Подписи (Id
), либо всем экземплярам на указанном сервере (ServerName
).
Примечание
Параметр ServerName
поддерживает подсказки значений имен серверов. Достаточно набрать имя параметра и с помощью TAB пролистать
список имен серверов.
Пример 1
Назначение группы доступности всем экземплярам Сервиса Подписи на указанном сервере.
Set-DssSignQueueAvailabilityGroup -ServerName ATLASDSS1 -GroupId 2
Пример 2
Назначение группы доступности указанному экземпляру Сервиса Подписи.
Set-DssSignQueueAvailabilityGroup -Id 1 -GroupId 2
Для переключения групп экземпляров Сервиса Подписи используется командлет Switch-DssSignQueueAvailabilityGroup
.
В параметре GroupId
указывается идентификатор группы, которую требуется сделать активной.
Примечание
При этом все остальные группы доступности делаются неактивными.
Пример
В данном примере группа с идентификатором 1
становится активной, при этом все остальные группы доступности
переводятся в неактивное состояние.
Switch-DssSignQueueAvailabilityGroup -GroupId 1
Для включения/отключения отдельных серверов используются командлеты Enable-DssSignQueueAvailabilityGroup
, Disable-DssSignQueueAvailabilityGroup
.
Пример
Включение обработчиков очереди запросов подписи на указанном сервере.
Enable-DssSignQueueAvailabilityGroup -ServerName ATLASDSS2
Отключение обработчиков очереди запросов подписи на указанном сервере.
Disable-DssSignQueueAvailabilityGroup -ServerName ATLASDSS2
Пример настройки
На рисунке отображено разворачивание DSS в кластере. Кластер состоит из двух ЦОДов. В каждом из ЦОДов развернуто два сервера DSS. Кластер настроен таким образом, что один из ЦОДов находится в режиме Active, а второй в режиме Passive. Таким образом, в каждый момент времени только один из ЦОДов принимает и обрабатывает запросы на подпись.
Соответственно сервера в каждом из ЦОДов должны быть объединены в кластер.
Пример настройки групп доступности:
Set-DssSignQueueAvailabilityGroup -ServerName DSS1_dc1 -GroupId 1
Set-DssSignQueueAvailabilityGroup -ServerName DSS2_dc1 -GroupId 1
Set-DssSignQueueAvailabilityGroup -ServerName DSS1_dc2_ -GroupId 2
Set-DssSignQueueAvailabilityGroup -ServerName DSS2_dc2 -GroupId 2
Таким образом, переключение между ЦОДами будет выполняться командой:
ЦОД1 -> ЦОД2
Switch-DssSignQueueAvailabilityGroup -GroupId 2
ЦОД2 -> ЦОД1
Switch-DssSignQueueAvailabilityGroup -GroupId 1
При необходимости сервер в Активном ЦОДе может быть включен/отключен следующей командой:
Disable-DssSignQueueAvailabilityGroup -ServerName DSS1_dc1
Enable-DssSignQueueAvailabilityGroup -ServerName DSS1_dc1