Проверка подлинности на основе токенов (HTTP/2) для APNS
Обзор
В этой статье описывается способ использования нового протокола APNS (HTTP/2) при проверке подлинности на основе токенов.
Основные преимущества использования нового протокола:
- Проще создать токен, чем сертификат.
- У токенов отсутствует срок окончания действия. Вы управляете их созданием и отзывом.
- Полезные данные могут иметь размер до 4 КБ.
- Синхронная обратная связь.
- Используется последняя версия протокола Apple, в то время как сертификаты по-прежнему используют устаревший двоичный протокол.
Этот новый механизм можно реализовать в два этапа:
- Получите необходимые сведения на портале учетной записи разработчика Apple.
- Добавьте новые данные в центр уведомлений.
Теперь для APNS центры уведомлений будут использовать новую систему проверки подлинности.
Обратите внимание, что если вы выполнили миграцию с использованием учетных данных сертификата для APNS, свойства токена перезапишут ваш сертификат в нашей системе, но приложение продолжит получать уведомления без проблем.
Получение сведений о проверке подлинности от Apple
Чтобы включить проверку подлинности на основе токенов, необходимы следующие свойства вашей учетной записи разработчика Apple:
Идентификатор ключа
Идентификатор ключа можно получить на странице Ключи страницы Сертификаты, идентификаторы и профили в учетной записи разработчика Apple:
Идентификатор и имя приложения
Имя и идентификатор приложения также доступны на странице "Сертификаты, идентификаторы и профили" в учетной записи разработчика.
Настройка с помощью пакета SDK для .NET или портала Azure
Центр можно настроить для использования проверки подлинности на основе токенов с помощью нашего клиентского пакета SDK последней версии или на портале Azure. Чтобы включить проверку подлинности на основе токенов, войдите на портал Azure и перейдите на панель центра уведомлений Параметры > Apple (APNS). Выберите Токен в свойстве Режим проверки подлинности, чтобы обновить все соответствующие свойства токена в центре.
- Введите свойства, полученные из учетной записи разработчика Apple.
- Выберите режим приложения (Рабочий или Песочница).
- Нажмите кнопку Сохранить, чтобы обновить учетные данные APNS.
Учетные данные на основе токенов состоят из следующих полей:
- Идентификатор ключа: идентификатор закрытого ключа, созданного на портале разработчика Apple (например:
2USFGKSKLT
). - Идентификатор команды: также называется префиксом или префиксом приложения. Это идентификатор организации на портале разработчика Apple (например,
S4V3D7CHJR
). - Идентификатор пакета: также называется идентификатором приложения. Это идентификатор пакета для приложения (например:
com.example.myapp
). Обратите внимание, что для одного приложения можно использовать только один ключ. Это значение сопоставляется с заголовком HTTPapns-topic
при отправке уведомления и используется для назначения конкретного приложения. Значение дляapns-topic
невозможно задать явным образом. - Токен: также называется ключом или закрытым ключом. Это значение берется из файла с расширением P8, созданного на портале разработчика Apple. Для ключа должен быть включен параметр APNS (который устанавливается на портале разработчика Apple при создании ключа). При указании этого значения на портале или API-интерфейсе NH значение должно быть удалено из верхнего или нижнего колонтитула PEM.
- Конечная точка: это переключатель в колонке портала центра уведомлений и строковое поле в API. Допустимые значения —
https://api.development.push.apple.com:443/3/device
илиhttps://api.sandbox.push.apple.com:443/3/device
. Центры уведомлений используют это значение для рабочей среды или песочницы для отправки уведомлений. Оно должно совпадать с назначениемaps-environment
в приложении, в противном случае созданные токены устройств APNS не будут соответствовать среде, и уведомления не будут отправляться.
Ниже приведен пример кода, иллюстрирующий правильное использование:
NamespaceManager nm = NamespaceManager.CreateFromConnectionString(_endpoint);
string token = "YOUR PRIVATE KEY HERE";
string keyId = "YOUR KEY ID HERE";
string appName = "YOUR APP NAME HERE";
string appId = "YOUR APP ID HERE";
NotificationHubDescription desc = new NotificationHubDescription("PATH TO YOUR HUB");
desc.ApnsCredential = new ApnsCredential(token, keyId, appId, appName);
desc.ApnsCredential.Endpoint = @"https://api.development.push.apple.com:443/3/device";
nm.UpdateNotificationHubAsync(desc);