Skip to main content

🙂 การยืนยันตัวตนแบบสดด้วยใบหน้า

SDK ทำงานเซสชันการยืนยันตัวตนแบบสดที่สมบูรณ์ให้คุณ: โดยจะล็อกใบหน้าของผู้ใช้, แสดง การท้าทายแบบสุ่ม 3 อย่าง (กะพริบตา, หันซ้าย, หันขวา, ยิ้ม) ซึ่งจะถูกตรวจสอบแบบเรียลไทม์ด้วยจุดสำคัญบนใบหน้าบนอุปกรณ์, เลือกเฟรมเซลฟี่หน้าตรงที่คมชัดที่สุดจากทั้งเซสชัน, และสรุปผลด้วย Face Active Liveness API1 IC ต่อเซสชันที่สรุปผลแล้ว เซิร์ฟเวอร์จะตรวจสอบเซลฟี่อีกครั้งและส่งกลับ ผลการตัดสินที่ลงนามด้วย HMAC-SHA256 ที่แบ็กเอนด์ของคุณสามารถตรวจสอบได้อย่างอิสระ

Flutter

import 'package:iapp_ekyc_sdk/iapp_ekyc_sdk.dart';

final client = IappEkycClient(apiKey: 'YOUR_API_KEY');

final liveness = await ActiveLivenessView.start(context, client: client);

if (liveness.verdict.passed) {
// ส่ง liveness.verdict + liveness.signature ไปยังแบ็กเอนด์ของคุณ
// ตรวจสอบ HMAC ที่นั่น แล้วดำเนินการต่อด้วยการลงทะเบียน
}

Web

import { IappEkyc } from '@iapp-technology/ekyc-sdk';

const ekyc = new IappEkyc({ apiKey: 'YOUR_API_KEY' });

const liveness = await ekyc.startActiveLiveness({
mount: document.getElementById('ekyc-mount'),
});

if (liveness.verdict.passed) {
// ส่ง liveness.verdict + liveness.signature ไปยังแบ็กเอนด์ของคุณเพื่อตรวจสอบ
}

iOS / Android / React Native

กระบวนการเดียวกันนี้มีอยู่ใน wrapper แบบเนทีฟ — หนึ่งเอนจิ้น, คุณภาพการจับภาพที่เหมือนกัน การตั้งค่าการติดตั้งและสิทธิ์การเข้าถึงกล้อง: iOS, Android & React Native

// iOS (Swift; Objective-C ก็รองรับ)
let config = IappEkycConfig(apiKey: "YOUR_API_KEY", flow: .activeLiveness)
IappEkycSdk.present(from: self, config: config) { result in
// ตรวจสอบ verdictJSON + signature บนแบ็กเอนด์ของคุณก่อนที่จะเชื่อถือ `passed`
}
// Android (Kotlin; Java ก็รองรับ)
ekyc.launch(IappEkycRequest.ActiveLiveness(config))
// React Native
<IappEkycFlow flow="activeLiveness" apiKey="YOUR_API_KEY"
onResult={handleResult} onError={handleError} onCancel={close} />

เซสชันทำงานอย่างไร

  • การล็อกใบหน้า — ต้องมีใบหน้าด้านหน้าเพียงใบหน้าเดียว, มีขนาดใหญ่และอยู่ตรงกลางเพียงพอ, และมั่นคงก่อนเริ่มการท้าทาย
  • การท้าทายแบบสุ่ม — การท้าทายที่แตกต่างกัน 3 อย่างถูกเลือกแบบสุ่มต่อเซสชัน; แต่ละอย่างจะถูกตรวจสอบด้วยเกณฑ์ที่เข้มงวด (การกะพริบตาต้องเป็นการเปลี่ยนจากปิดเป็นเปิด, การหันต้องถึงมุม yaw ≥ 18° และกลับสู่จุดศูนย์กลาง, การยิ้มต้องคงที่)
  • การป้องกันการโกง — หากไม่เห็นใบหน้า, มีใบหน้าอื่นเข้ามาในเฟรม, หรือมีการเปลี่ยนตัวตน จะเริ่มการท้าทายปัจจุบันใหม่; การเริ่มใหม่ซ้ำๆ หรือหมดเวลาจะทำให้เซสชันล้มเหลว
  • การเลือกเฟรมที่ดีที่สุด — ทุกเฟรมที่คมชัด, ด้านหน้า, และดวงตาเปิดในระหว่างเซสชันจะถูกให้คะแนน (ความคมชัดของ Laplacian × ขนาดใบหน้า); เฟรมที่ดีที่สุดจะกลายเป็นเซลฟี่ที่ส่งไปยังเซิร์ฟเวอร์
  • ผลการตัดสินที่ลงนามโดยเซิร์ฟเวอร์ — จุดสิ้นสุดการสรุปผลจะตรวจสอบบันทึกการท้าทาย, รันการยืนยันตัวตนแบบสดแบบพาสซีฟบนเซลฟี่อีกครั้ง, และลงนามผลการตัดสิน ผลลัพธ์บนอุปกรณ์เพียงอย่างเดียวมีไว้เพื่อแนะนำ UX เท่านั้น — ควรตรวจสอบลายเซ็นบนแบ็กเอนด์ของคุณเสมอ
เชื่อถือผลการตัดสินที่ลงนามเท่านั้น

ไคลเอนต์ที่ถูกแก้ไขสามารถปลอมแปลงผลลัพธ์การท้าทายบนอุปกรณ์ได้ แบ็กเอนด์ของคุณต้องคำนวณ HMAC-SHA256(secret, canonicalJSON(verdict)) ใหม่และเปรียบเทียบกับ signature ก่อนที่จะเชื่อถือ verdict.passed ดู ตัวอย่างการตรวจสอบลายเซ็น

เรียนรู้เพิ่มเติม