Показать/Скрыть содержание

    Настройка Push-уведомлений

    Настройка PUSH-уведомлений представляет собой набор следующих шагов, некоторые из которых могут быть пропущены в зависимости от текущих настроек.

    1. Создание и настройка сервиса PUSH-уведомлений PUSH Service.
    2. Настройка нового плагина рассылки PUSH-уведомлений.
    3. (опционально) Настройка существующего плагина рассылки PUSH-уведомлений.
    4. (опционально) Настройка PUSH-уведомлений для myDSS.

    См. также:

    • Шаблоны PUSH-уведомлений
    • Общие сведения о прикладных системах.

    Создание и настройка сервиса PUSH-уведомлений (PUSH Service)

    Сервис PUSH-уведомлений позволяет управлять доставкой PUSH-уведомлений пользователям в различные мобильные приложения. При необходимости PUSH Service позволяет организовать соединение с внешними PUSH-серверами из выделенного сегмента сети (DMZ), как это изображено на рисунке ниже.

    pushproxy.png

    Предварительные настройки

    PUSH Service представляет собой веб-сервис, не требующий наличия БД. Перед установкой и развертыванием PUSH Service необходимо обеспечить наличие следующих компонентов:

    • Сервер в DMZ для доступа к PUSH-серверам (выделять отдельный сервер под PUSH Service необязательно)
    • ОС из списка поддерживаемых ОС (см. Общее Описание из комплекта документации)
    • Установленный и настроенный веб-сервер из списка поддерживаемых серверов
    • Дистрибутив PUSH Service (входит в комплект поставки либо может быть получен на сайте)
    • Доступ к PUSH-серверам
    Примечание

    PUSH Service использует новый протокол взаимодействия с сервером Apple Push Notification Service. Доступ к APNS осуществляется по протоколу HTTP/2 и TLS 1.2.

    • Development server: api.sandbox.push.apple.com:443
    • Production server: api.push.apple.com:443

    Доступ к Google API HTTP v1: *.googleapis.com:443. Поддержка доступа к к Google API HTTP v1 реализована только в версиях PushProxy не ниже 2.0.4690.

    Доступ к Huawei Mobile Services:

    • https://oauth-login.cloud.huawei.com/oauth2/v2/token
    • https://push-api.cloud.huawei.com/v1
    Внимание!

    Отправка PUSH-уведомлений на устройства HUAWEI поддерживается только в версиях КриптоПро DSS и PUSH Service не ниже 2.0.3584.

    Для отправки PUSH-уведомлений на устройства HUAWEI в более ранних версиях КриптоПро DSS необходима установка дополнительных программных библиотек. Библиотеки предоставляются по запросу на https://support.cryptopro.ru/.

    Примечание

    Для отправки PUSH-уведомлений на устройства Apple требуется сертификат с клиентской аутентификацией (-ApnClientCertPath и -ApnClientCertPassword) на Apple Push Notification Service. Получить данный сертификат можно по запросу на dsssupport@cryptopro.ru. В запросе необходимо указать также имя приложения, для которого требуется получать уведомления.

    Для отправки PUSH-уведомлений на устройства Android требуется получить ключ доступа к Firebase Google API HTTP v1 (-ServiceAccountFile). Получить данный ключ можно по запросу на dsssupport@cryptopro.ru. В запросе необходимо указать также имя приложения, для которого требуется получать уведомления.

    Для отправки PUSH-уведомлений на устройства Huawei требуется получить ключ доступа к HUAWEI Mobile Services (-ClientID, -ClientSecret). Получить данный ключ можно по запросу на dsssupport@cryptopro.ru. В запросе необходимо указать также имя приложения, для которого требуется получать уведомления.

    Установка PUSH Service и вспомогательного ПО

    На данном этапе необходимо установить дистрибутив PUSH Service, если он не был установлен ранее. Порядок установки зависит от используемой ОС.

    Настройка сервера с PUSH Service

    Настройка сервера с установленным PUSH Service должна производиться в консоли Powershell, запущенной от имени администратора.

    1. Создание веб-приложения

    На данном этапе системный администратор создает экземпляр сервиса PUSH Service (например, с именем pushproxy) и указывает имя сайта, на котором будет развернуто веб-приложение данного сервиса (например, имя сайта по умолчанию "Default Web Site").

    $InstanceName ="pushproxy"
    $SiteName  = "Default Web Site"
    Install-DssPushProxyInstance -InstanceName $InstanceName -SiteName $SiteName
    

    2. Подготовка к интеграции с ЦИ

    В ЦИ может быть зарегистрировано несколько наборов плагинов (т.н. "прикладных систем") для отправки PUSH-уведомлений. Каждая из этих прикладных систем ассоциирована с одним мобильным приложением, используемым какой-либо организацией. По умолчанию все эти прикладные системы рассылают PUSH-уведомления с использованием Сервиса рассылки уведомлений своего ЦИ. Чтобы PUSH-уведомления какой-либо системы перенаправлялись через PUSH Service, на данном сервисе необходимо зарегистрировать соответствующий модуль оповещения.

    Примечание

    Несколько прикладных систем, находящихся в пределах одного ЦИ, могут быть подключены к одному экземпляру сервиса PUSH Service. При этом для каждой из систем на сервисе PUSH Service должен быть зарегистрирован соответствующий модуль.

    Примечание

    Несколько экземпляров ЦИ с зарегистрированными на них прикладными системами также могут быть подключены к одному экземпляру PUSH Service. В этом случае для каждой из прикладных систем каждого экземпляров ЦИ должен быть зарегистрирован соответствующий модуль на сервисе PUSH Service.

    Модуль PUSH Service представляет собой набор плагинов, позволяющих отправлять PUSH-уведомления на устройства пользователей под управлением ОС iOS и Android (в т.ч. для устройств Huawei).

    Регистрация модуля состоит из следующих шагов:

    • Создание модуля

    При создании модуля необходимо указать имя данного модуля и аутентификационные данные (логин и пароль) для последующего подключения к нему со стороны КриптоПро DSS.

    Примечание

    Имя модуля, указанное при его создании, включается в URL-адрес, используемый для подключения КриптоПро DSS к PUSH Service. Поэтому имя модуля должно сооветствовать требованиям, содержащимся в RFC 3986.

    $ModuleName ="oneproxy"
    $AuthLogin ="oneproxylogin"
    $AuthPassword ="oneproxypass"
    
    New-DssPushProxyModule -ModuleName $ModuleName -AuthLogin $AuthLogin -AuthPassword $AuthPassword
    
    • Настройка аутентификации PUSH Service на внешних PUSH-серверах
    Примечание
    • Для аутентификации на внешних PUSH-серверах у администратора должны быть заранее получены учетные данные, соответствующие требованиям данного PUSH-сервера.
    • Системный администратор должен настраивать аутентификацию только для тех PUSH-серверов, которые планируется использовать для доставки PUSH-уведомлений пользователям.
    • Если на экземпляре сервиса PUSH Service зарегистрировано более одного модуля, необходимо указывать параметр -ModuleName.

    Для интеграции с APNS потребуется задать следующие параметры:

    • -AppBundleIdentifier - уникальный идентификатор приложения в магазине приложений App Store;
    • -TeamId - уникальный идентификатор группы разработчиков;
    • -P8PrivateKeyId идентификатор ключа, используемого для подключения к APN;
    • -P8PrivateKeyFile - контейнер с закрытым ключом для подключения к APN;
    • -DebugMode - режим отправки PUSH-уведомлений.
    # Интеграция с APNS
    $P8PrivateKeyFile = "filepath.p8"
    Set-DssPushProxyApn -ModuleName $ModuleName -AppBundleIdentifier ru.company.mydss -TeamId GDH765RWJD -P8PrivateKeyId 52N5ZJVBQX -P8PrivateKeyFile $P8PrivateKeyFile
    
    # Настройка режима отправки PUSH-уведомлений
    # 0 - production
    # 1 - sandbox
    Set-DssPushProxyApn -ModuleName $ModuleName -DebugMode 0
    

    Для интеграции с FCM потребуется задать следующие параметры:

    • -ServiceAccountFile - сервисный ключ доступа.
    # Интеграция с FCM
    Set-DssPushProxyFcm -ModuleName $ModuleName -ServiceAccountFile "Путь к файлу сервисного ключа доступа"
    

    Для интеграции с HMS потребуется задать следующие параметры:

    • -ClientId - идентификатор подключения к серверу HMS.
    • -ClientSecret - ключ для подключения к серверу HMS.
    # Интеграция с HMS
    Set-DssPushProxyHms -ModuleName $ModuleName -ClientId 12345678 -ClientSecret c573e8fdfd...7792
    
    • Включение модулей
    Примечание

    Если на экземпляре сервиса PUSH Service зарегистрировано более одного модуля, необходимо указывать параметр -ModuleName.

    # Включение модуля APNS
    Enable-DssPushProxyApn -ModuleName $ModuleName
    
    # Включение модуля FCM
    Enable-DssPushProxyFcm -ModuleName $ModuleName
    
    # Включение модуля HMS
    Enable-DssPushProxyHms -ModuleName $ModuleName
    

    Настройка нового плагина рассылки PUSH-уведомлений

    Для того, чтобы настроить новый транспортный плагин для использования с PUSH Service, необходимо задать следующие параметры в командлете Add-MyDssSystem:

    • PushType - сущность, создающая PUSH-уведомления. Для PUSH Service необходимо использовать значение PushProxy.
    • PushProxyLogin, PushProxyPassword - учетные данные для подключения к экземпляру сервиса PUSH Service, которые были заданы на этапе настройки модуля PUSH Service
    • PushProxyAddress - URL-адрес PUSH Service

    URL-адрес сервиса PUSH Service имеет следующий формат:

    http(s)://<hostname>/pushproxy/<modulename>
    

    где

    • hostname - DNS-имя сервера, на котором развернут PUSH Service;
    • pushproxy - имя экземпляра сервиса, указанное при его создании в параметре -InstanceName;
    • modulename - имя модуля PUSH Service.

    Пример развертывания:

    #Имя экземпляра Центра Идентификации
    $STSAppName = "STS"
    
    #URL MDAG
    $mdagUrl = "https://<hostname>/mdag"
    
    #Отображаемое имя системы
    $systemDisplayName = "system_display_name"
    
    #Регистрация системы
    #При регистрации также будут зарегистрированы модули оповещения и OAuth-клиент
    $system = Add-MyDssSystem -DisplayName $STSAppName -Name $systemDisplayName -MyDssAddress $mdagUrl -PushType PushProxy -PushProxyLogin oneproxylogin -PushProxyPassword oneproxypass -PushProxyAddress "http://<hostname>/pushproxy/oneproxy"
    

    Настройка существующего плагина рассылки PUSH-уведомлений

    Для того, чтобы перенаправить PUSH-уведомления, отправляемые траспортным плагином, на сервис PUSH Service, необходимо получить идентификатор данного плагина. Получить идентификатор возможно при помощи командлета Get-DssStsPlugin. После этого необходимо задать новые параметры для выбранного плагина:

    • UsePushProxy - включение/отключение отправки Push-уведомлений через сервис PUSH Service
    • PushProxyLogin, PushProxyPassword - учетные данные для подключения к экземпляру сервиса PUSH Service, которые были заданы на этапе настройки модуля PUSH Service
    • PushProxyAddress - URL-адрес PUSH Service

    URL-адрес сервиса PUSH Service имеет следующий формат:

    http(s)://<hostname>/pushproxy/<modulename>
    

    где

    • hostname - DNS-имя сервера, на котором развернут PUSH Service;
    • pushproxy - имя экземпляра сервиса, указанное при его создании в параметре -InstanceName;
    • modulename - имя модуля PUSH Service.

    Пример перенастройки:

    #Подготовка данных
    #Идентификатор прикладной системы. Значение можно получить при помощи командлета Get-MyDssSystem
    $systemID = "ID прикладной системы"
    #Наименование экземпляра ЦИ
    $STSAppName = "STS"
    
    $hostname = "DNS-имя сервера, на котором развернут сервис PushProxy" 
    $pushproxy_instance = "Имя экземпляра сервиса PushProxy" 
    $modulename = "Имя модуля рассылки сервиса PushProxy" 
    $proxy_login = "Логин для подключения к модулю рассылки сервиса PushProxy" 
    $proxy_password = "Пароль для подключения к модулю рассылки сервиса PushProxy"
    
    #Интеграция с сервисом PushProxy
    Set-MyDssSystem -DisplayName $STSAppName -SystemId $systemID -PushType PushProxy -PushProxyAddress "https://$hostname/$pushproxy_instance/$modulename" -PushProxyLogin $proxy_login -PushProxyPassword $proxy_password
    
    #Перезапуск экземпляра ЦИ
    Restart-DssStsInstance
    

    Настройка PUSH-уведомлений для myDSS (External)

    Настройка рассылки PUSH-уведомлений при помощи PUSH Service выполняется следующим образом.

    #Настройка интеграции с сервисом рассылки PUSH-уведомлений Push Service
    #Подготовка данных:
    $hostname = "DNS-имя сервера, на котором развернут сервис Push Service"
    $pushproxy_instance = "Имя экземпляра сервиса Push Service"
    $modulename_mydss = "Имя модуля рассылки сервиса Push Service для мобильного приложения myDSS"
    $proxy_login = "Логин для подключения к модулю рассылки сервиса Push Service"
    $proxy_password = "Пароль для подключения к модулю рассылки сервиса Push Service"
    
    #Настройка интеграции для плагина доставки Push-уведомлений на iOS-устройства:
    $apn = Get-MyDssExternalPlugin -DisplayName MyDssServerExternal | where {$_.TypeName -eq "CryptoPro.DSS.PushService.Notification.APN.ApnPlugin"}
    Set-MyDssExternalPlugin -DisplayName MyDssServerExternal -PluginID $apn.ID -Settings @{"UsePushProxy"="True";"PushProxyAddress"="https://$hostname/$pushproxy_instance/$modulename_mydss";"PushProxyLogin"="$proxy_login";"PushProxyPassword"="$proxy_password"}
    
    #Настройка интеграции для плагина доставки Push-уведомлений на Android-устройства:
    $fcm = Get-MyDssExternalPlugin -DisplayName MyDssServerExternal | where {$_.TypeName -eq "CryptoPro.DSS.PushService.Notification.FCM.FcmPlugin"}
    Set-MyDssExternalPlugin -DisplayName MyDssServerExternal -PluginID $fcm.ID -Settings @{"UsePushProxy"="True";"PushProxyAddress"="https://$hostname/$pushproxy_instance/$modulename_mydss";"PushProxyLogin"="$proxy_login";"PushProxyPassword"="$proxy_password"}
    
    #Настройка интеграции для плагина доставки Push-уведомлений на Huawei-устройства:
    $connStr = Get-MyDssServerExternalRegistryProperties -DisplayName MyDssServerExternal
    $transport = Add-MyDssExternalPlugin -DisplayName MyDssServerExternal -PluginTypeName "CryptoPro.DSS.PushService.Notification.HMS.HmsPlugin,CryptoPro.DSS.PushService.Notification" -PluginType HMS -Settings @{"UsePushProxy"="True";"PushProxyAddress"="https://$hostname/$pushproxy_instance/$modulename_mydss";"PushProxyLogin"="$proxy_login";"PushProxyPassword"="$proxy_password";"ConnectionString"="$connStr"}
    $formatter = Add-MyDssExternalPlugin -DisplayName MyDssServerExternal -PluginTypeName "CryptoPro.DSS.PushService.Notification.HMS.HmsFormatterPlugin,CryptoPro.DSS.PushService.Notification" -PluginType Formatter -Settings @{ }
    Add-MyDssExternalNotifier -DisplayName MyDssServerExternal -TransportPluginID $transport.ID -FormatterPluginID $formatter.ID -NotifierType HMS -Type "CryptoPro.DSS.PushService.Notification.HMS.HmsNotifier,CryptoPro.DSS.PushService.Notification" -Settings @{}
    

    Настройка HMS для существующего плагина отправки PUSH-уведомлений

    Отправка уведомлений при помощи PUSH Service требует изменения настроек плагина отправки PUSH-уведомлений.

    # Получение идентификатора модуля оповещения: 
    $HMS_notifier = Get-MyDssExternalNotifier|where {$_.Type -eq "HMS"}
    
    # Настройка подключения к PUSH Service: 
    Set-MyDssExternalPlugin -PluginID $HMS_notifier.TransportPlugin.Id -Settings @{"UsePushProxy"="true";"PushProxyAddress"="http://<hostname>/pushproxy/<hmsproxy>";"PushProxyLogin"="<login>";"PushProxyPassword"="<pwd>"}
    
    В начало © ООО "КРИПТО-ПРО", 2000–2025