Настройка Push-уведомлений
Настройка PUSH-уведомлений представляет собой набор следующих шагов, некоторые из которых могут быть пропущены в зависимости от текущих настроек.
- Создание и настройка сервиса PUSH-уведомлений PUSH Service.
- Настройка нового плагина рассылки PUSH-уведомлений.
(опционально)
Настройка существующего плагина рассылки PUSH-уведомлений.(опционально)
Настройка PUSH-уведомлений для myDSS.
См. также:
- Шаблоны PUSH-уведомлений https://dss.cryptopro.ru/docs/adminguide/dsssdk/push.html - четко разделить по приложениям заголовками
- Общие сведения о прикладных системах.
Создание и настройка сервиса PUSH-уведомлений (PUSH Service)
Сервис PUSH-уведомлений позволяет управлять доставкой PUSH-уведомлений пользователям в различные мобильные приложения. При необходимости PUSH Service позволяет организовать соединение с внешними PUSH-серверами из выделенного сегмента сети (DMZ), как это изображено на рисунке ниже.
Предварительные настройки
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 ServicePushProxyAddress
- 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 ServicePushProxyLogin
,PushProxyPassword
- учетные данные для подключения к экземпляру сервиса PUSH Service, которые были заданы на этапе настройки модуля PUSH ServicePushProxyAddress
- 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>"}