מעבר מ- SafetyNet Attestation API

אם אתם כבר מאמתים את התשובות באמצעות שרת מהימן, ואז מתבצעת העברה מ-SafetyNet Attestation API אל השימוש ב-Play Integrity API הוא פשוט. אפשר להשתמש גם ב-Play Integrity API כתחליף לאפליקציה בדיקות רישוי שבוצעו ישירות מול אפליקציה של חנות Play דרך AIDL, כמו אפליקציות של רישוי ספריית אימות (LVL). רוב השינויים הנדרשים יהיו בצד השרת המהימן, כלומר קריאה וניתוח של אסימון התגובה של Play Integrity. שימו לב שבמהלך ההעברה, גם האפליקציה וגם השרת צריכים לתמוך בשני ממשקי ה-API בו-זמנית, לתמוך בלקוחות ישנים יותר שעדיין לא עודכנו.

אם האפליקציה שלך קיבלה מכסות גבוהות יותר עבור אימות SafetyNet ב-API, צריך לבדוק את רמת השימוש שהוקצתה לשלמות האפליקציה של Play. API, ואם יש צורך, בקשה להעברה לרמה שהוגדלה.

כדי לתמוך ב-Play Integrity API, צריך לבצע את השינויים הבאים:

לקוח Android:

  • מוודאים שהקוד מעביר את הצופן החד-פעמי (nonce) בפורמט הנכון אל ה-builder של IntegrityTokenRequest:
    • String (במקום מערך בייטים)
    • מתאים לכתובות URL
    • מתבצע קידוד כ-Base64 וללא אריזה
    • 16 תווים לפחות
    • עד 500 תווים
  • צריך לבדוק את הלוגיקה של הניסיונות החוזרים ולוודא שהאפליקציה מטפלת בשגיאות. המתאים.
  • יש לוודא שנתוני התגובה שנשלחים לשרת המהימן מאפשרים להבחין בין בין התגובות של SafetyNet Attestation API לבין Play Integrity API תשובות מדויקות.

שרת מהימן:

  • צריך לבדוק את הלוגיקה של יצירת קוד חדש ולוודא שהיא תואמת ל-Play Integrity API הדרישות.
  • צריך לוודא שקוד השרת יכול להבחין בין SafetyNet Attestation API תשובות מ-Play Integrity API ותגובות של Play Integrity API. ודאו שהקוד מנתח שמאמת את התשובות האלה כמו שצריך.
  • מוסיפים לוגיקה לאימות ולניתוח Play Integrity API.
  • התשובה החדשה מ-Play Integrity API מספקת פרטים נוספים, לכן כדי לשפר את הלוגיקה של קבלת ההחלטות ואת המשוב, שנשלחים חזרה למכשירי הלקוח. מידע נוסף זמין במאמר API הקטע 'מיפוי תשובות' בנושא הזה.

קידוד צופן חד-פעמי (nonce)

יש להעביר צופן חד-פעמי שקשור לתקינות ל-Play Integrity API בתור בקידוד Base64, בטוחים לכתובות URL, וגם String לא ארוזה. הפורמט הזה שונה מ-SecurityNet Attestation API, שדורש byte[].

  • 'התאמה לכתובת URL' הוא שימוש ב'כתובת URL בטוחה בשם קובץ' של Base64 (מידע נוסף מופיע כאן RFC 4648 סעיף 5), כאשר '-' וגם '_' משמשים במקום '+' ו-'/'. מידע נוסף על קידוד Base64 זמין ב-RFC 4648.
  • "ללא אריזה" פירושו השמטת כל נקודות הסיום של השורה. כלומר, הפלט שורה ארוכה אחת.
.setNonce(Base64.encodeToString(NONCE_BYTES,
        Base64.URL_SAFE | Base64.NO_WRAP))

בנוסף, צריך לוודא שיצירת הצופן החד-פעמי (nonce) תואמת ל-Play Integrity הנחיות ל-API.

מיפוי תגובת API

הטבלה הבאה ממפה את השדות של SafetyNet Attestation API ל-Play שלהם שווי ערך ב-Integrity API.

SafetyNet API לאימות (attestation) Play Integrity API הערות
timestampMs requestDetails.timestampMillis
nonce requestDetails.nonce
apkPackageName appIntegrity.packageName
apkCertificateDigestSha256 appIntegrity.certificateSha256Digest כדאי לוודא ההגדרה של appRecognitionVerdict היא PLAY_RECOGNIZED
ctsProfileMatch משולב עם deviceIntegrity.deviceRecognitionVerdict
basicIntegrity משולב עם deviceIntegrity.deviceRecognitionVerdict
evaluationType משולב עם deviceIntegrity.deviceRecognitionVerdict
advice Not available
error Not available רשימת התוויות של תקינות המכשיר תהיה ריקה.

מיפוי של קביעת תקינות המכשיר

SafetyNet Attestation API Play Integrity API
ctsProfileMatch basicIntegrity evaluationType deviceRecognitionVerdict
FALSE FALSE אין תוויות
FALSE TRUE MEETS_BASIC_INTEGRITY
TRUE FALSE אין תוויות
TRUE TRUE BASIC MEETS_DEVICE_INTEGRITY, MEETS_BASIC_INTEGRITY
TRUE TRUE HARDWARE_BACKED MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY, MEETS_BASIC_INTEGRITY

ייתכן שיהיה צורך להגדיר את קבוצת התקינות של המכשיר תגובות אם משתמשת באסטרטגיית אכיפה מורכבת וזקוקה לכל הערכים האפשריים.

לוגיקה לניסיון חוזר של Play Integrity API

אפליקציה צריכה לנסות לשלוח שוב קריאות ל-API במקרה של קודי שגיאה מסוימים. עליך לוודא שיש בדקנו את כל השגיאה , ולוודא שהאפליקציה תנסה שוב במקרה הצורך עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff). נשמח אם תוכלו לסמן בכוכב ודאו שהעיכוב המינימלי הוא 5 שניות לפחות, גדל באופן אקספוננציאלי (5 שניות, 10 שניות, 20 שניות, 40 שניות וכן הלאה), כדי של-API יהיה מספיק זמן לבדוק את המכשיר תקינות האפליקציה.

החלפה אופציונלית של App Licensing API

אם משתמשים ב-App Licensing API, יש לך אפשרות לעבור ולהשתמש ב- Play Integrity API, בתור אסימון של Play Integrity API כולל את פרטי רישוי. בדומה להעברה של SafetyNet Attestation API, אמורים לצפות שמספר מכשירים ישמרו גרסה ישנה יותר של האפליקציה. השרת המהימן צריך להיות מסוגל לעבד גם את App Licensing API וגם Play Integrity API.

קבלת תשובות עד להוצאה משימוש המלאה

אם עדיין לא עברת ל-Play Integrity API או הסרת את SafetyNet אימות עד לתאריך היעד להעברה (31 בינואר 2024), צריך להשלים את השלב הזה הטופס הזה כדי לבקש הארכה. אם הבקשה תאושר להארכה, האפליקציה תמשיך קבלת תשובות מצוות SafetyNet Attestation עד המועד האחרון להוצאה משימוש (31 בינואר 2025).