Jeśli weryfikujesz już odpowiedzi przy użyciu zaufanego serwera, a następnie przeprowadź migrację z interfejsu SafetyNet Attestation API do Interfejs Play Integrity API jest prosty. Interfejsu Play Integrity API można też używać zamiast aplikacji Kontrole licencji przeprowadzane bezpośrednio w aplikacji ze Sklepu Play za pomocą AIDL, np. aplikacji wykorzystywanych przez Licencjonowanie Biblioteka weryfikacji (LVL) Większość wymaganych zmian zostanie wprowadzonych po stronie zaufanego serwera, co wymaga odczytywać i analizować token odpowiedzi Play Integrity. Pamiętaj, że podczas migracji zarówno aplikacja, jak i serwer muszą obsługiwać oba interfejsy API jednocześnie, Obsługuj starszych klientów, którzy nie zostali jeszcze zaktualizowani.
Jeśli Twojej aplikacji przyznano zwiększony limit atestu SafetyNet API, sprawdź przypisany poziom wykorzystania na potrzeby Play Integrity API oraz w razie potrzeby żądanie przeniesienia do podwyższonego poziomu.
Do obsługi interfejsu Play Integrity API musisz wprowadzić te zmiany:
Klient na Androida:
- Upewnij się, że kod przekazuje prawidłowo sformatowaną liczbę jednorazową do funkcji
Kreator
IntegrityTokenRequest
:- .
String
(zamiast tablicy bajtów)- Odpowiednie w adresie URL
- Zakodowane w formacie Base64 bez zawijania wierszy
- Minimum 16 znaków
- Maksymalnie 500 znaków.
- Sprawdź logikę ponawiania prób i upewnij się, że aplikacja obsługuje błędy w odpowiedni sposób.
- Upewnij się, że dane odpowiedzi wysyłane do zaufanego serwera pozwalają na rozróżnianie między odpowiedziami SafetyNet Attestation API a Play Integrity API odpowiedzi.
Zaufany serwer:
- Zapoznaj się z logiką generowania liczby jednorazowej i upewnij się, że jest ona zgodna z Play Integrity API .
- Upewnij się, że kod serwera rozróżnia interfejs SafetyNet Attestation API z odpowiedziami i odpowiedziami interfejsu Play Integrity API. Upewnij się, że kod został przeanalizowany poprawnie zweryfikuje te odpowiedzi.
- Dodaj funkcje logiczne, aby sprawdzać i analizować Odpowiedzi interfejsu Play Integrity API.
- Nowa odpowiedź Play Integrity API zawiera dodatkowe informacje, może być konieczne do ulepszenia procesów decyzyjnych i wysyłanie danych z powrotem do urządzeń klienckich. Więcej informacji znajdziesz w artykule Interfejs API Mapowanie odpowiedzi w tym temacie.
Kodowanie jednorazowe
Liczba jednorazowa związana z integralnością musi być przekazywana do interfejsu Play Integrity API jako
zakodowany w formacie Base64,
bezpiecznego adresu URL,
bez opakowań String
. Ten format
różni się od interfejsu SafetyNet Attestation API, który wymaga byte[]
.
- „Bezpieczne dla adresu URL” oznacza użycie tagu „adres URL i nazwa pliku bezpieczne” wariantu Base64 (patrz RFC 4648, sekcja 5), gdzie „-” i „_” są używane zamiast znaków „+” i „/”. Więcej informacji na temat kodowania Base64 znajdziesz w RFC 4648).
- „no-wrap” oznacza pominięcie wszystkich zakończeń wierszy. Oznacza to, że dane wyjściowe to jeden długi wiersz.
.setNonce(Base64.encodeToString(NONCE_BYTES,
Base64.URL_SAFE | Base64.NO_WRAP))
Upewnij się też, że generowanie liczby jednorazowej jest zgodne z zasadami Play Integrity. wytycznych dotyczących interfejsu API.
Mapowanie odpowiedzi interfejsu API
Tabela poniżej mapuje pola SafetyNet Attestation API na ich pola Google Play Odpowiedniki Integrity API.
SafetyNet Atestation API | Interfejs Play Integrity API | Notes | |
timestampMs |
requestDetails.timestampMillis
|
||
nonce |
requestDetails.nonce |
||
apkPackageName |
appIntegrity.packageName
|
||
apkCertificateDigestSha256
|
appIntegrity.certificateSha256Digest
|
Upewnij się,
appRecognitionVerdict ma wartość
PLAY_RECOGNIZED
|
|
ctsProfileMatch |
Połączona w
deviceIntegrity.deviceRecognitionVerdict
|
||
basicIntegrity |
Połączona w
deviceIntegrity.deviceRecognitionVerdict
|
||
evaluationType |
Połączona w
deviceIntegrity.deviceRecognitionVerdict
|
||
advice |
Not available |
||
error
|
Not available
|
Lista etykiet integralności urządzenia – wartość będzie pusta. |
Mapowanie oceny integralności urządzenia
Interfejs API atestu SafetyNet | Play Integrity API | ||
ctsProfileMatch
|
basicIntegrity
|
evaluationType
|
deviceRecognitionVerdict
|
FALSE |
FALSE |
Brak etykiet | |
FALSE |
TRUE |
MEETS_BASIC_INTEGRITY |
|
TRUE |
FALSE |
Brak etykiet | |
TRUE |
TRUE |
BASIC
|
MEETS_DEVICE_INTEGRITY, MEETS_BASIC_INTEGRITY
|
TRUE |
TRUE |
HARDWARE_BACKED |
MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY,
MEETS_BASIC_INTEGRITY
|
Może być konieczne skonfigurowanie zestawu integralności urządzenia odpowiedzi, jeśli aplikacja korzysta ze złożonej strategii egzekwowania zasad i wymaga wszystkich możliwych wartości.
Logika ponawiania prób w interfejsie Play Integrity API
W przypadku wystąpienia pewnych kodów błędów aplikacja powinna ponawiać próby wywołania interfejsu API. Upewnij się, że masz sprawdzono wszystkie błędy i upewnij się, że aplikacja ponawia próbę w razie potrzeby ze wzrastającym czasem do ponowienia. Proszę upewnij się, że minimalne opóźnienie wynosi co najmniej 5 sekund i zwiększa się wykładniczo (5s, 10 s, 20 s, 40 s itd.), aby zapewnić API wystarczająco dużo czasu na ocenę urządzenia integralności aplikacji.
Opcjonalne zastąpienie interfejsu App Licensing API
Jeśli używasz interfejsu App Licensing API, możesz opcjonalnie przejść na korzystanie z interfejsu Interfejs Play Integrity API, ponieważ token Play Integrity API zawiera informacje licencyjne. Tak jak w przypadku migracji interfejsu SafetyNet Attestation API, należy spodziewać się, że na wielu urządzeniach będzie przechowywana starszą wersję aplikacji. Zaufany serwer powinien być w stanie przetwarzać zarówno interfejs App Licensing API, jak i Odpowiedzi interfejsu Play Integrity API.
Otrzymywać odpowiedzi do momentu pełnego wyłączenia funkcji
Jeśli nie udało Ci się jeszcze przejść na interfejs Play Integrity API ani usunąć SafetyNet poświadczania przed terminem migracji (do 31 stycznia 2024 r.). Możesz zrobić to formularz aby poprosić o przedłużenie terminu. Jeśli prośba o przedłużenie terminu zostanie zatwierdzona, aplikacja będzie nadal działać otrzymywanie odpowiedzi od atestu SafetyNet do terminu pełnego wycofania (31 stycznia 2025 r.).