Проверка подлинности на основе токенов (HTTP/2) для APNS

Обзор

В этой статье описывается способ использования нового протокола APNS (HTTP/2) при проверке подлинности на основе токенов.

Основные преимущества использования нового протокола:

  • Проще создать токен, чем сертификат.
  • У токенов отсутствует срок окончания действия. Вы управляете их созданием и отзывом.
  • Полезные данные могут иметь размер до 4 КБ.
  • Синхронная обратная связь.
  • Используется последняя версия протокола Apple, в то время как сертификаты по-прежнему используют устаревший двоичный протокол.

Этот новый механизм можно реализовать в два этапа:

  • Получите необходимые сведения на портале учетной записи разработчика Apple.
  • Добавьте новые данные в центр уведомлений.

Теперь для APNS центры уведомлений будут использовать новую систему проверки подлинности.

Обратите внимание, что если вы выполнили миграцию с использованием учетных данных сертификата для APNS, свойства токена перезапишут ваш сертификат в нашей системе, но приложение продолжит получать уведомления без проблем.

Получение сведений о проверке подлинности от Apple

Чтобы включить проверку подлинности на основе токенов, необходимы следующие свойства вашей учетной записи разработчика Apple:

Идентификатор ключа

Идентификатор ключа можно получить на странице Ключи страницы Сертификаты, идентификаторы и профили в учетной записи разработчика Apple:

Certificates

Identifiers

Идентификатор и имя приложения

Имя и идентификатор приложения также доступны на странице Сертификаты, идентификаторы и профили в учетной записи разработчика:

Certificates and IDs

Настройка с помощью пакета SDK для .NET или портала Azure

Центр можно настроить для использования проверки подлинности на основе токенов с помощью нашего клиентского пакета SDK последней версии или на портале Azure. Чтобы включить проверку подлинности на основе токенов, войдите на портал Azure и перейдите на панель центра уведомлений Параметры > Apple (APNS). Выберите Токен в свойстве Режим проверки подлинности, чтобы обновить все соответствующие свойства токена в центре.

Configure token

  • Введите свойства, полученные из учетной записи разработчика Apple.
  • Выберите режим приложения (Рабочий или Песочница).
  • Нажмите кнопку Сохранить, чтобы обновить учетные данные APNS.

Учетные данные на основе токенов состоят из следующих полей:

  • Идентификатор ключа: идентификатор закрытого ключа, созданного на портале разработчика Apple (например: 2USFGKSKLT).
  • Идентификатор команды: также называется префиксом или префиксом приложения. Это идентификатор организации на портале разработчика Apple (например, S4V3D7CHJR).
  • Идентификатор пакета: также называется идентификатором приложения. Это идентификатор пакета для приложения (например: com.example.myapp). Обратите внимание, что для одного приложения можно использовать только один ключ. Это значение сопоставляется с заголовком HTTP apns-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);

Следующие шаги