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 > Apple (APNS) centrum powiadomień. 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);