App Check มีการสนับสนุนในตัวสำหรับผู้ให้บริการหลายราย: DeviceCheck และ App Attest บนแพลตฟอร์ม Apple, Play Integrity และ SafetyNet บน Android และ reCAPTCHA v3 และ reCAPTCHA Enterprise ในเว็บแอป ( ภาพรวม ) ผู้ให้บริการเหล่านี้มีความเข้าใจเป็นอย่างดีซึ่งควรตอบสนองความต้องการของนักพัฒนาส่วนใหญ่ อย่างไรก็ตาม คุณสามารถใช้ผู้ให้บริการ App Check ของคุณเองได้เช่นกัน การใช้ผู้ให้บริการแบบกำหนดเองเป็นสิ่งจำเป็นเมื่อ:
คุณต้องการใช้ผู้ให้บริการอื่นนอกเหนือจากที่มีอยู่แล้วภายใน
คุณต้องการใช้ผู้ให้บริการในตัวด้วยวิธีที่ไม่รองรับ
คุณต้องการตรวจสอบยืนยันอุปกรณ์โดยใช้แพลตฟอร์มอื่นที่ไม่ใช่ Apple, Android และเว็บ ตัวอย่างเช่น คุณสามารถสร้างผู้ให้บริการ App Check สำหรับระบบปฏิบัติการเดสก์ท็อปหรืออุปกรณ์ Internet-of-Thing
คุณต้องการใช้เทคนิคการยืนยันของคุณเองบนแพลตฟอร์มใดก็ได้
ภาพรวม
หากต้องการใช้ผู้ให้บริการ App Check ที่กำหนดเอง คุณต้องมีสภาพแวดล้อมแบ็กเอนด์ที่ปลอดภัยซึ่งเรียกใช้ Node.js Firebase Admin SDK ได้ ซึ่งอาจเป็น Cloud Functions ซึ่งเป็นแพลตฟอร์มคอนเทนเนอร์ เช่น Cloud Run หรือเซิร์ฟเวอร์ของคุณเอง
จากสภาพแวดล้อมนี้ คุณจะให้บริการที่เข้าถึงเครือข่ายได้ซึ่งได้รับการพิสูจน์ความถูกต้องจากไคลเอ็นต์แอปของคุณ และ—หากการพิสูจน์ความถูกต้องผ่านการประเมินความถูกต้องของคุณ—จะส่งกลับโทเค็น App Check ตัวบ่งชี้เฉพาะที่คุณใช้เป็นหลักฐานยืนยันความถูกต้องจะขึ้นอยู่กับผู้ให้บริการบุคคลที่สามที่คุณใช้ หรือตัวบ่งชี้ของการประดิษฐ์ของคุณเอง หากคุณกำลังใช้ตรรกะที่กำหนดเอง
โดยปกติแล้ว คุณจะเปิดเผยบริการนี้เป็นตำแหน่งข้อมูล REST หรือ gRPC แต่รายละเอียดนี้ขึ้นอยู่กับคุณ
สร้างจุดสิ้นสุดการรับโทเค็น
สร้างปลายทางที่เข้าถึงเครือข่ายได้ซึ่งสามารถรับข้อมูลความถูกต้องจากลูกค้าของคุณ ตัวอย่างเช่น การใช้ Cloud Functions:
// Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => { // ... });
เพิ่มตรรกะปลายทางที่ประเมินข้อมูลความถูกต้อง นี่คือตรรกะหลักของผู้ให้บริการ App Check ที่คุณกำหนดเอง ซึ่งคุณจะต้องเขียนเอง
หากคุณพิจารณาว่าไคลเอ็นต์เป็นของแท้ ให้ใช้ Admin SDK เพื่อสร้างโทเค็น App Check และส่งคืนโทเค็นพร้อมเวลาหมดอายุให้กับไคลเอ็นต์:
const admin = require('firebase-admin'); admin.initializeApp(); // ... admin.appCheck().createToken(appId) .then(function (appCheckToken) { // Token expires in an hour. const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60; // Return appCheckToken and expiresAt to the client. }) .catch(function (err) { console.error('Unable to create App Check token.'); console.error(err); });
หากคุณไม่สามารถยืนยันความถูกต้องของไคลเอ็นต์ได้ ให้ส่งคืนข้อผิดพลาด (เช่น ส่งคืนข้อผิดพลาด HTTP 403)
ทางเลือก : ตั้งค่า time-to-live (TTL) สำหรับโทเค็น App Check ที่ออกโดยผู้ให้บริการที่กำหนดเองของคุณโดยส่งวัตถุ
AppCheckTokenOptions
ไปยังcreateToken()
คุณสามารถตั้งค่า TTL เป็นค่าใดก็ได้ระหว่าง 30 นาทีถึง 7 วัน เมื่อตั้งค่านี้ ให้ระวังการแลกเปลี่ยนต่อไปนี้:- ความปลอดภัย: TTL ที่สั้นกว่าให้การรักษาความปลอดภัยที่แน่นหนากว่า เนื่องจากช่วยลดหน้าต่างที่ผู้โจมตีสามารถใช้โทเค็นที่รั่วไหลหรือสกัดกั้นได้
- ประสิทธิภาพ: TTL ที่สั้นลงหมายความว่าแอปของคุณจะดำเนินการรับรองบ่อยขึ้น เนื่องจากกระบวนการรับรองแอปเพิ่มเวลาแฝงให้กับคำขอเครือข่ายทุกครั้งที่ดำเนินการ TTL สั้นๆ อาจส่งผลต่อประสิทธิภาพของแอปได้
TTL เริ่มต้นที่ 1 ชั่วโมงนั้นสมเหตุสมผลสำหรับแอปส่วนใหญ่
ขั้นตอนถัดไป
ตอนนี้ คุณได้ติดตั้งตรรกะฝั่งเซิร์ฟเวอร์ของผู้ให้บริการที่กำหนดเองแล้ว เรียนรู้วิธีใช้งานจาก Apple , Android และ เว็บ ไคลเอ็นต์