SafetyNet Attestation API'den taşıma

Yanıtları güvenilir bir sunucu kullanarak doğruluyorsanız daha sonra SafetyNet Attestation API'den Play Integrity API oldukça basittir. İlgili içeriği oluşturmak için kullanılan Play Integrity API, Uygulama'nın yerine de kullanılabilir. Lisanslama kontrolleri doğrudan AIDL üzerinden sağlanan Play Store uygulaması (Lisanslama Doğrulama Kitaplığı (LVL). Gerekli değişikliklerin çoğu güvenilir sunucu tarafında olacaktır ve Play Integrity yanıt jetonunu okuyup analiz etmelidir. Taşıma sırasında hem uygulamanın hem de sunucunun iki API'yi aynı anda desteklemesi gerekir: henüz güncellenmemiş eski müşterileri destekleme

Uygulamanıza SafetyNet Onayı için kota sınırlarının artırılmasına izin verildiyse API kullanıyorsanız Play Integrity için atanan kullanım katmanını API ve gerekiyorsa yükseltmeye çalışıyor.

Play Integrity API'yi desteklemek için aşağıdaki değişiklikler gereklidir:

Android İstemcisi:

  • Kodun doğru biçimlendirilmiş tek seferlik rastgele sayısını IntegrityTokenRequest oluşturucu:
    • String (bayt dizisi yerine)
    • URL açısından güvenli
    • Base64 olarak kodlanır ve sarmalamaz
    • En az 16 karakter
    • Maksimum 500 karakter
  • Yeniden deneme mantığını inceleyin ve uygulamanın hataları işlediğinden emin olun. sağlayabilir.
  • Güvenilir sunucuya gönderilen yanıt verilerinin ayırt edilmeye izin verdiğinden emin olun SafetyNet Attestation API yanıtları ve Play Integrity API arasında tıklayın.

Güvenilir Sunucu:

  • Tek seferlik oluşturma mantığını inceleyin ve Play Integrity API'ye uygun olduğundan emin olun. hakkında daha fazla bilgi edinin.
  • Sunucu kodunun SafetyNet Attestation API'yi ayırt edebildiğinden emin olun yanıtları ve Play Integrity API yanıtları. Kodun ayrıştırıldığından ve bu yanıtları düzgün şekilde doğrular.
  • Doğrulama ve ayrıştırma mantığı ekleme Play Integrity API yanıtları.
  • Yeni Play Integrity API yanıtı ek bilgi sağladığından karar verme mantığını ve geri bildirimi geliştirmek için gerekli olabilir istemci cihazlara geri gönderilen verileri içerebilir. Daha fazla bilgi için API'ye Yanıt Eşleme bölümünü inceleyebilirsiniz.

Tek seferlik kodlama

Bütünlükle ilgili tek seferlik rastgele sayı Play Integrity API'ye Base64 kodlu, URL için güvenli ve sarmalanmamış String. Bu biçim byte[] gerektiren SafetyNet Attestation API'den farklıdır.

  • "URL için güvenli" "URL ve dosya adı güvenli"nin kullanılması anlamına gelir Base64 varyantı (bkz. RFC 4648 bölüm 5), burada "-" ve '_' '+' yerine kullanılır ve "/" yer alır. Base64 kodlaması hakkında daha fazla bilgi edinmek için RFC bölümüne bakın 4648).
  • "sarmalama yok" tüm satır sonlandırıcılarının atlanması anlamına gelir. Bu, çıkışın tek ve uzun bir satır olacak.
.setNonce(Base64.encodeToString(NONCE_BYTES,
        Base64.URL_SAFE | Base64.NO_WRAP))

Ayrıca, tek seferlik rastgele oluşturma oluşturmanın Play Integrity ile uyumlu olduğundan emin olun. API yönergelerine bakın.

API Yanıtı Eşlemesi

Aşağıdaki tablo, SafetyNet Attestation API alanlarını Play ile eşleştirir Integrity API eşdeğerleri.

SafetyNet Onay API'si Play Integrity API Notlar
timestampMs requestDetails.timestampMillis
nonce requestDetails.nonce
apkPackageName appIntegrity.packageName
apkCertificateDigestSha256 appIntegrity.certificateSha256Digest Şunlardan emin olun: appRecognitionVerdict şuna ayarlandı: PLAY_RECOGNIZED
ctsProfileMatch Şununla birleştirildi: deviceIntegrity.deviceRecognitionVerdict.
basicIntegrity Şununla birleştirildi: deviceIntegrity.deviceRecognitionVerdict.
evaluationType Şununla birleştirildi: deviceIntegrity.deviceRecognitionVerdict.
advice Not available
error Not available Cihaz bütünlük etiketlerinin listesi boş görünür.

Cihaz entegrasyon kararı eşlemesi

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

Cihaz bütünlüğü grubunu yapılandırmanız gerekebilir uygulamanın karmaşık bir yaptırım stratejisi kullanması ve olası tüm değerleri alması gerekir.

Play Integrity API Yeniden Deneme Mantığı

Uygulama, belirli hata kodlarıyla karşılaşılması durumunda API çağrılarını yeniden denemelidir. Şuna sahip olduğunuzdan emin olun: tüm hatalar incelendi ve emin olmak için eksponansiyel geri yükleme ile gerektiğinde uygulamanın yeniden denemesidir. Lütfen minimum gecikmenin en az 5 saniye olduğundan, bu süre katlanarak arttığından emin olun (5 sn, 10 sn., 20 sn., 40 sn.) bir örneğidir.

İsteğe bağlı App Licensing API'yi değiştirme

App Licensing API'yi kullanıyorsanız isteğe bağlı olarak Play Integrity API jetonu olarak Play Integrity API, uygulamanın lisans bilgileri. SafetyNet Attestation API taşımasında olduğu gibi çok sayıda cihazda uygulamanın eski bir sürümünü bulundurması beklenir. Güvenilen sunucunuz hem App Licensing API'yi hem de Play Integrity API yanıtları.

Kullanımdan kaldırma süreci tamamen sona erene kadar yanıt alabilirsiniz.

Henüz Play Integrity API'ye geçiş yapmadıysanız veya SafetyNet'i kaldırmadıysanız Taşıma için son tarihe (31 Ocak 2024) kadar onay alırsanız bu formu formu ek süre isteğinde bulunabilirsiniz. Uzatma için onaylanırsa uygulamanız devam eder tam devre dışı bırakma tarihine kadar SafetyNet Onayı'ndan yanıt alma (31 Ocak 2025).