Migrazione dall'API SafetyNet Attestation

Se stai già verificando le risposte utilizzando un server attendibile, quindi esegui la migrazione dall'API SafetyNet Attestation alla L'API Play Integrity è semplice. La L'API Play Integrity può essere utilizzata anche come sostituto di App Controlli per le licenze svolti direttamente con l'app Play Store tramite AIDL, ad esempio quelle eseguite Libreria di verifica (LVL). La maggior parte delle modifiche necessarie verrà applicata sul lato server attendibile, leggere e analizzare il token di risposta di Play Integrity. Tieni presente che durante la migrazione sia l'applicazione che il server devono supportare entrambe le API contemporaneamente per supportare i client meno recenti non ancora aggiornati.

Se alla tua app sono stati concessi limiti di quota aumentati per l'attestazione SafetyNet API, devi controllare il livello di utilizzo assegnato per Play Integrity API e, se necessario, richiesta di spostamento al livello elevato.

Per supportare l'API Play Integrity, sono necessarie le seguenti modifiche:

Client Android:

  • Assicurati che il codice stia passando il nonce formattato correttamente al Strumento per la creazione di IntegrityTokenRequest:
    • String (anziché un array di byte)
    • Sicuro per URL
    • Codificato come Base64 e senza wrapping
    • Minimo 16 caratteri
    • Massimo 500 caratteri
  • Esamina la logica dei nuovi tentativi e assicurati che l'applicazione gestisca gli errori in modo appropriato.
  • Assicurati che i dati di risposta inviati al server attendibile consentano tra le risposte dell'API SafetyNet Attestation e l'API Play Integrity diverse.

Server affidabile:

  • Esamina la logica di generazione nonce e assicurati che soddisfi l'API Play Integrity requisiti.
  • Assicurati che il codice del server sia in grado di distinguere tra l'API SafetyNet Attestation e le risposte dell'API Play Integrity. Assicurati che il codice analizzi convalida queste risposte correttamente.
  • Aggiungi logica per convalidare e analizzare Risposte dell'API Play Integrity.
  • Poiché la nuova risposta dell'API Play Integrity fornisce ulteriori dettagli, necessarie per migliorare la logica del processo decisionale e il feedback i dati inviati ai dispositivi client. Per ulteriori informazioni, consulta API Mappatura delle risposte di questo argomento.

Codifica nonce

Un nonce relativo all'integrità deve essere trasmesso all'API Play Integrity sotto forma di Codifica Base64, Sicuro per URL. senza wrapper String. Questo formato è diverso dall'API SafetyNet Attestation, che richiede byte[].

  • "Sicuro per URL" significa utilizzare lo standard "URL e nome file-safe" la variante Base64 (vedi RFC 4648 sezione 5), dove "-" e "_" vengono utilizzate al posto di "+" e "/". Per ulteriori informazioni sulla codifica Base64, consulta RFC 4648
  • "no-wrap" omettere tutti i terminatori di riga. Ciò significa che l'output un'unica lunga linea.
.setNonce(Base64.encodeToString(NONCE_BYTES,
        Base64.URL_SAFE | Base64.NO_WRAP))

Inoltre, assicurati che la generazione del nonce sia allineata ai requisiti di Play Integrity Linee guida per le API.

Mappatura delle risposte dell'API

La seguente tabella mappa i campi dell'API SafetyNet Attestation a Google Play Equivalenti dell'API Integrity.

SafetyNet API Attestation API Play Integrity Notes
timestampMs requestDetails.timestampMillis
nonce requestDetails.nonce
apkPackageName appIntegrity.packageName
apkCertificateDigestSha256 appIntegrity.certificateSha256Digest Assicurati che Il valore di appRecognitionVerdict è impostato su PLAY_RECOGNIZED
ctsProfileMatch Combinato in deviceIntegrity.deviceRecognitionVerdict
basicIntegrity Combinato in deviceIntegrity.deviceRecognitionVerdict
evaluationType Combinato in deviceIntegrity.deviceRecognitionVerdict
advice Not available
error Not available L'elenco di etichette di integrità del dispositivo sarà vuoto.

Mappatura dell'esito relativo all'integrità del dispositivo

API SafetyNet Attestation API Play Integrity
ctsProfileMatch basicIntegrity evaluationType deviceRecognitionVerdict
FALSE FALSE Nessuna etichetta
FALSE TRUE MEETS_BASIC_INTEGRITY
TRUE FALSE Nessuna etichetta
TRUE TRUE BASIC MEETS_DEVICE_INTEGRITY, MEETS_BASIC_INTEGRITY
TRUE TRUE HARDWARE_BACKED MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY, MEETS_BASIC_INTEGRITY

Potresti dover configurare l'insieme di strumenti per l'integrità di risposta se le tue utilizza una complessa strategia di applicazione e ha bisogno di tutti i valori possibili.

Logica dei nuovi tentativi dell'API Play Integrity

Un'app dovrebbe riprovare le chiamate API in caso di determinati codici di errore. Assicurati di avere esaminato tutti gli errori codici e assicurati che che l'applicazione ripeta quando necessario con il backoff esponenziale. Non dimenticare di apporre assicurati che il ritardo minimo sia di almeno 5 secondi, aumentando in modo esponenziale (5 s, 10, 20, 40 e così via), per fornire all'API tempo sufficiente per valutare il dispositivo e e l'integrità dell'applicazione.

Sostituzione facoltativa dell'API App Licensing

Se utilizzi l'API App Licensing, puoi scegliere di eseguire la migrazione all'API L'API Play Integrity, in quanto token dell'API Play Integrity include i campi informazioni sulle licenze. Come per la migrazione dell'API SafetyNet Attestation, diversi dispositivi manterranno una versione precedente dell'applicazione. Il server attendibile deve essere in grado di elaborare sia l'API App Licensing sia Risposte dell'API Play Integrity.

Ricevi risposte fino alla disattivazione completa

Se non hai ancora eseguito la migrazione all'API Play Integrity o hai rimosso SafetyNet Attestazione entro la scadenza della migrazione (31 gennaio 2024), puoi completare questo modulo per richiedere una proroga. Se viene approvata per un'estensione, l'app continuerà Ricezione di risposte da SafetyNet Attestation fino alla scadenza completa della disattivazione (31 gennaio 2025).