ถ้าคุณยืนยันการตอบกลับโดยใช้เซิร์ฟเวอร์ที่เชื่อถือได้แล้ว การย้ายข้อมูล จาก SafetyNet Attestation API ไปยัง Play Integrity API ใช้งานง่าย คุณยังสามารถใช้ Play Integrity API แทนแอป การตรวจสอบการอนุญาตให้ใช้สิทธิที่ดําเนินการโดยตรงกับ แอป Play Store ผ่าน AIDL เช่น แอปที่ดำเนินการโดยการออกใบอนุญาต ไลบรารีการยืนยัน (LVL) การเปลี่ยนแปลงที่จำเป็นส่วนใหญ่จะอยู่ในฝั่งเซิร์ฟเวอร์ที่เชื่อถือได้ ซึ่งจำเป็นต้อง อ่านและวิเคราะห์โทเค็นการตอบกลับ Play Integrity โปรดทราบว่าในระหว่างการย้ายข้อมูล ทั้งแอปพลิเคชันและเซิร์ฟเวอร์ต้องรองรับ API ทั้งสองแบบพร้อมกัน สนับสนุนไคลเอ็นต์เก่าที่ยังไม่ได้อัปเดต
หากแอปได้รับสิทธิ์เพิ่มขีดจำกัดโควต้าสำหรับเอกสารรับรอง SafetyNet API คุณควรตรวจสอบระดับการใช้งานที่กำหนดสําหรับ Play Integrity API และถ้าจำเป็นต้องขอย้าย เป็นระดับสูงขึ้น
คุณต้องทำการเปลี่ยนแปลงต่อไปนี้เพื่อรองรับ Play Integrity API
ไคลเอ็นต์ Android
- ตรวจสอบว่าโค้ดได้ส่งผ่านค่า Nonce ที่มีรูปแบบถูกต้องไปยัง
เครื่องมือสร้าง
IntegrityTokenRequest
:String
(แทนอาร์เรย์ไบต์)- ปลอดภัยสำหรับ URL
- เข้ารหัสเป็น Base64 และไม่มีการรวม
- ต้องมีอักขระอย่างน้อย 16 ตัว
- มีอักขระได้สูงสุด 500 ตัว
- ตรวจสอบตรรกะการลองอีกครั้ง และตรวจสอบว่าแอปพลิเคชันจัดการกับข้อผิดพลาด อย่างเหมาะสม
- ตรวจสอบว่าข้อมูลการตอบสนองที่ส่งไปยังเซิร์ฟเวอร์ที่เชื่อถืออนุญาตให้แยก ระหว่างการตอบกลับ SafetyNet Attestation API กับ Play Integrity API คำตอบ
เซิร์ฟเวอร์ที่เชื่อถือได้:
- ตรวจสอบตรรกะการสร้าง Nonce และตรวจสอบว่าเป็นไปตาม Play Integrity API ข้อกำหนด
- ตรวจสอบว่าโค้ดเซิร์ฟเวอร์สามารถแยกความแตกต่างระหว่าง SafetyNet Attestation API และการตอบกลับของ Play Integrity API ตรวจสอบว่าได้แยกวิเคราะห์โค้ดและ จะตรวจสอบคำตอบเหล่านั้นอย่างถูกต้อง
- เพิ่มตรรกะเพื่อตรวจสอบความถูกต้องและแยกวิเคราะห์ คำตอบของ Play Integrity API
- เนื่องจากการตอบกลับใหม่ของ Play Integrity API จะให้รายละเอียดเพิ่มเติม อาจจำเป็นต้องปรับปรุงตรรกะการตัดสินใจและข้อเสนอแนะ ที่ส่งกลับไปยังอุปกรณ์ไคลเอ็นต์ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ API ส่วนการแมปการตอบกลับภายในหัวข้อนี้
การเข้ารหัส Nonce
ต้องส่ง Nonce ที่เกี่ยวข้องกับความสมบูรณ์ไปยัง Play Integrity API เป็น
Base64 ที่เข้ารหัส
ไม่ใช้ URL และ
ไม่มีการรวม String
รูปแบบนี้
แตกต่างจาก SafetyNet 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 เทียบเท่ากับ API ความสมบูรณ์
SafetyNet API เอกสารรับรอง | 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 มีเวลาเพียงพอในการประเมินอุปกรณ์และ ความสมบูรณ์ของแอปพลิเคชัน
การแทนที่ 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)