Uwierzytelnianie oparte na tokenach (HTTP/2) dla usługi APNS
Omówienie
W tym artykule wyjaśniono, jak używać nowego protokołu HTTP/2 usługi APNS z uwierzytelnianiem opartym na tokenach.
Najważniejsze korzyści wynikające z używania nowego protokołu obejmują:
- Generowanie tokenów jest stosunkowo proste (w porównaniu z certyfikatami)
- Nie ma więcej dat wygaśnięcia — masz kontrolę nad tokenami uwierzytelniania i ich odwoływaniem
- Ładunki mogą teraz mieć maksymalnie 4 KB
- Synchroniczne opinie
- Korzystasz z najnowszego protokołu firmy Apple — certyfikaty nadal używają protokołu binarnego, który jest oznaczony do wycofania
Za pomocą tego nowego mechanizmu można wykonać w dwóch krokach:
- Uzyskaj niezbędne informacje z portalu konta dewelopera firmy Apple.
- Skonfiguruj centrum powiadomień przy użyciu nowych informacji.
Usługa Notification Hubs jest teraz ustawiona na korzystanie z nowego systemu uwierzytelniania w usłudze APNS.
Należy pamiętać, że jeśli przeprowadzono migrację z używania poświadczeń certyfikatu dla usługi APNS, właściwości tokenu zastępują certyfikat w naszym systemie, ale aplikacja będzie nadal bezproblemowo otrzymywać powiadomienia.
Uzyskiwanie informacji o uwierzytelnianiu od firmy Apple
Aby włączyć uwierzytelnianie oparte na tokenach, potrzebne są następujące właściwości z konta dewelopera firmy Apple:
Identyfikator klucza
Identyfikator klucza można uzyskać ze strony Klucze w obszarze Certyfikaty, Identyfikatory i profile na koncie dewelopera firmy Apple:
Identyfikator aplikacji i nazwa aplikacji
Nazwa i identyfikator aplikacji są również dostępne na stronie Certyfikaty, Identyfikatory i profile na koncie dewelopera.
Konfigurowanie za pomocą zestawu .NET SDK lub witryny Azure Portal
Centrum można skonfigurować tak, aby używało uwierzytelniania opartego na tokenach przy użyciu naszego najnowszego zestawu SDK klienta lub w witrynie Azure Portal. Aby włączyć uwierzytelnianie oparte na tokenach w portalu, zaloguj się do witryny Azure Portal i przejdź do panelu Ustawienia > centrum powiadomień Apple (APNS). Wybierz pozycję Token z właściwości Tryb uwierzytelniania, aby zaktualizować centrum przy użyciu wszystkich odpowiednich właściwości tokenu.
- Wprowadź właściwości pobrane z konta dewelopera firmy Apple.
- Wybierz tryb aplikacji (produkcja lub piaskownica).
- Kliknij przycisk Zapisz, aby zaktualizować poświadczenia usługi APNS.
Poświadczenia oparte na tokenach składają się z następujących pól:
- Identyfikator klucza: identyfikator klucza prywatnego wygenerowanego w portalu dla deweloperów firmy Apple,
2USFGKSKLT
na przykład . - Identyfikator zespołu: nazywany również "Prefiksem" lub "Prefiksem aplikacji". Jest to identyfikator organizacji w portalu dla deweloperów firmy Apple; na przykład
S4V3D7CHJR
. - Identyfikator pakietu: nazywany również identyfikatorem aplikacji. Jest to identyfikator pakietu dla aplikacji; na przykład
com.example.myapp
. Należy pamiętać, że dla jednej aplikacji można użyć tylko jednego klucza. Ta wartość jest mapowania naapns-topic
nagłówek HTTP podczas wysyłania powiadomienia i jest używana do kierowania do określonej aplikacji. Nie można ustawić wartości jawnieapns-topic
. - Token: nazywany również kluczem "klucz" lub "klucz prywatny". Jest to uzyskiwane z pliku p8 wygenerowanego w portalu dla deweloperów firmy Apple. Klucz musi mieć włączoną usługę APNS (która jest wybrana w portalu dla deweloperów firmy Apple podczas generowania klucza). Wartość musi mieć nagłówek/stopkę PEM rozłożoną z niego po podaniu go do portalu/interfejsu API NH.
- Punkt końcowy: jest to przełącznik w bloku portalu usługi Notification Hubs i pole ciągu w interfejsie API. Prawidłowe wartości to
https://api.development.push.apple.com:443/3/device
ihttps://api.sandbox.push.apple.com:443/3/device
. Usługa Notification Hubs używa tej wartości dla środowiska produkcyjnego lub piaskownicy do wysyłania powiadomień. To musi być zgodne zaps-environment
uprawnieniem w aplikacji, w przeciwnym razie wygenerowane tokeny urządzenia APNS nie są zgodne ze środowiskiem, a powiadomienia nie będą wysyłane.
Oto przykładowy kod ilustrujący prawidłowe użycie:
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);