App Check มีการรองรับผู้ให้บริการหลายรายในตัว ได้แก่ DeviceCheck และ App Attest บนแพลตฟอร์ม Apple, Play Integrity และ SafetyNet บน Android และ reCAPTCHA Enterprise ในเว็บแอป (ภาพรวม) ผู้ให้บริการเหล่านี้คือผู้ให้บริการที่เข้าใจเป็นอย่างดีและสอดคล้องกับความต้องการ แต่คุณก็ใช้ App Check ที่กำหนดเองได้ ผู้ให้บริการเครือข่าย จำเป็นต้องใช้ผู้ให้บริการที่กำหนดเองในกรณีต่อไปนี้
คุณต้องการใช้ผู้ให้บริการรายอื่นที่ไม่ใช่ผู้ให้บริการที่มีให้
คุณต้องการใช้ผู้ให้บริการในตัวในรูปแบบที่ไม่รองรับ
คุณต้องการยืนยันอุปกรณ์โดยใช้แพลตฟอร์มอื่นที่ไม่ใช่ Apple, Android และ ข้อมูลเว็บ ตัวอย่างเช่น คุณอาจสร้างผู้ให้บริการ App Check สำหรับระบบปฏิบัติการบนเดสก์ท็อป หรือ อุปกรณ์อินเทอร์เน็ตของสรรพสิ่ง
คุณต้องการใช้เทคนิคการยืนยันของคุณเองบนแพลตฟอร์มใดๆ
ภาพรวม
คุณต้องมีแบ็กเอนด์ที่ปลอดภัยจึงจะใช้ผู้ให้บริการ App Check ที่กำหนดเองได้ ที่สามารถเรียกใช้ Firebase Admin SDK ของ Node.js ซึ่งอาจเป็น Cloud Functions ซึ่งเป็นแพลตฟอร์มคอนเทนเนอร์ เช่น Cloud Run หรือเซิร์ฟเวอร์ของคุณเอง
จากสภาพแวดล้อมนี้ คุณจะให้บริการที่เครือข่ายเข้าถึงได้ ได้รับหลักฐานยืนยันความถูกต้องจากลูกค้าแอป และหากหลักฐานของ ความถูกต้องผ่านการประเมินความน่าเชื่อถือ แสดง App Check โทเค็น ตัวบ่งชี้เฉพาะที่คุณใช้เป็นหลักฐานยืนยันความถูกต้องจะขึ้นอยู่กับ ผู้ให้บริการบุคคลที่สามที่คุณใช้อยู่ หรือตัวบ่งชี้ของคุณเอง สิ่งประดิษฐ์ในกรณีที่คุณกำลังปรับใช้ตรรกะที่กำหนดเอง
โดยปกติแล้วคุณเปิดเผยบริการนี้เป็นปลายทาง REST หรือ gRPC แต่รายละเอียดนี้ ตามความต้องการของคุณ
สร้างปลายทางการได้โทเค็น
สร้างปลายทางที่เข้าถึงเครือข่ายได้ซึ่งรับข้อมูลความถูกต้องจาก ลูกค้าของคุณ ตัวอย่างเช่น การใช้ฟังก์ชันระบบคลาวด์
// 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 และเว็บ