App Check มีการรองรับผู้ให้บริการหลายรายในตัว ได้แก่ DeviceCheck และ App Attest ในแพลตฟอร์ม Apple, Play Integrity ใน Android และ reCAPTCHA Enterprise ในเว็บแอป (ภาพรวม) ผู้ให้บริการเหล่านี้เป็นที่รู้จักกันดีและควรตอบสนองความต้องการของนักพัฒนาแอปส่วนใหญ่ได้ อย่างไรก็ตาม คุณยังสามารถใช้ ผู้ให้บริการที่กำหนดเองApp Checkของคุณเองได้ด้วย คุณต้องใช้ผู้ให้บริการที่กำหนดเองในกรณีต่อไปนี้
ต้องการใช้ผู้ให้บริการรายอื่นที่ไม่ใช่ผู้ให้บริการในตัว
ต้องการใช้ผู้ให้บริการในตัวในวิธีที่ไม่รองรับ
ต้องการยืนยันอุปกรณ์โดยใช้แพลตฟอร์มอื่นที่ไม่ใช่ Apple, Android และเว็บ เช่น คุณสามารถสร้างผู้ให้บริการ App Check สำหรับระบบปฏิบัติการเดสก์ท็อปหรือ อุปกรณ์ Internet of Things
ต้องการใช้เทคนิคการยืนยันของคุณเองในแพลตฟอร์มใดก็ได้
ภาพรวม
หากต้องการใช้ผู้ให้บริการ 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 และ เว็บ