App Check มีการสนับสนุนผู้ให้บริการหลายรายในตัว ได้แก่ DeviceCheck และ AppAttest ในแพลตฟอร์ม Apple, Play Integrity ใน Android และ reCAPTCHA Enterprise ในเว็บแอป (ภาพรวม) ผู้ให้บริการเหล่านี้เป็นที่รู้จักกันดีและควรตอบสนองความต้องการของนักพัฒนาแอปส่วนใหญ่ อย่างไรก็ตาม คุณยังใช้ผู้ให้บริการ App Check ที่กําหนดเองได้ด้วย คุณต้องใช้ผู้ให้บริการที่กําหนดเองในกรณีต่อไปนี้
คุณต้องการใช้ผู้ให้บริการรายอื่นที่ไม่ใช่ผู้ให้บริการที่มาพร้อมกับระบบ
คุณต้องการใช้ผู้ให้บริการในตัวในลักษณะที่ไม่รองรับ
คุณต้องการยืนยันอุปกรณ์โดยใช้แพลตฟอร์มอื่นนอกเหนือจาก Apple, Android และเว็บ เช่น คุณอาจสร้างApp Checkผู้ให้บริการสำหรับระบบปฏิบัติการเดสก์ท็อปหรืออุปกรณ์อินเทอร์เน็ตของสรรพสิ่ง
คุณต้องการใช้เทคนิคการยืนยันของคุณเองในแพลตฟอร์มใดก็ได้
ภาพรวม
หากต้องการใช้ผู้ให้บริการ 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.onRequest((request, response) => { // ... });
เพิ่มลงในตรรกะปลายทางที่ประเมินข้อมูลความถูกต้อง นี่คือตรรกะหลักของผู้ให้บริการ 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 และเว็บ