ข้ามไปยังเนื้อหาหลัก

Webhook

Logto Webhook ให้การแจ้งเตือนแบบเรียลไทม์สำหรับเหตุการณ์ต่าง ๆ รวมถึงการเปลี่ยนแปลงบัญชีผู้ใช้, บทบาท (Role), สิทธิ์ (Permission), องค์กร (Organization), บทบาทขององค์กร, สิทธิ์ขององค์กร และ การโต้ตอบของผู้ใช้

เมื่อเกิดเหตุการณ์ Logto จะส่ง HTTP request ไปยัง Endpoint URL ที่คุณกำหนด โดยมีข้อมูลรายละเอียดของเหตุการณ์ เช่น user ID, username, email และรายละเอียดอื่น ๆ ที่เกี่ยวข้อง (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลใน payload และ header ดูที่ Webhook request) แอปพลิเคชันของคุณสามารถประมวลผล request นี้และดำเนินการที่กำหนดเอง เช่น ส่งอีเมลหรืออัปเดตข้อมูลในฐานข้อมูล

เรายังคงเพิ่มเหตุการณ์ใหม่ ๆ ตามความต้องการของผู้ใช้ หากคุณมีความต้องการเฉพาะสำหรับธุรกิจของคุณ โปรดแจ้งให้เราทราบ

ทำไมต้องใช้ Webhook?

Webhook มอบการสื่อสารแบบเรียลไทม์ระหว่างแอปพลิเคชัน ช่วยลดความจำเป็นในการ polling และทำให้ข้อมูลอัปเดตทันที ช่วยให้การผสานแอปพลิเคชันและการทำงานอัตโนมัติของ workflow ง่ายขึ้นโดยไม่ต้องใช้โค้ดที่ซับซ้อนหรือ API เฉพาะทาง

ตัวอย่างการใช้งาน Webhook ที่พบบ่อยสำหรับ CIAM ได้แก่:

  • ส่งอีเมล: ตั้งค่า Webhook เพื่อส่งอีเมลต้อนรับให้ผู้ใช้ใหม่เมื่อสมัครสมาชิก หรือแจ้งเตือนผู้ดูแลระบบเมื่อผู้ใช้ลงชื่อเข้าใช้จากอุปกรณ์หรือสถานที่ใหม่
  • ส่งการแจ้งเตือน: ตั้งค่า Webhook เพื่อเรียกผู้ช่วยเสมือนกับระบบ CRM ของคุณเพื่อให้การสนับสนุนลูกค้าแบบเรียลไทม์เมื่อผู้ใช้สมัครสมาชิก
  • เรียก API เพิ่มเติม: ตั้งค่า Webhook เพื่อตรวจสอบการเข้าถึงของผู้ใช้โดยเช็ค domain อีเมลหรือ IP address จากนั้นใช้ Logto Management API เพื่อกำหนดบทบาท (Role) และสิทธิ์ (Permission) ที่เหมาะสมกับทรัพยากร
  • ซิงโครไนซ์ข้อมูล: ตั้งค่า Webhook เพื่อให้แอปพลิเคชันอัปเดตเกี่ยวกับการเปลี่ยนแปลง เช่น การระงับหรือการลบบัญชีผู้ใช้
  • สร้างรายงาน: ตั้งค่า Webhook เพื่อรับข้อมูลกิจกรรมการเข้าสู่ระบบของผู้ใช้และนำไปสร้างรายงานเกี่ยวกับการมีส่วนร่วมของผู้ใช้หรือรูปแบบการใช้งาน

คำศัพท์

ItemDescription
Eventเมื่อมีการดำเนินการเฉพาะ จะเกิด hook event ประเภทหนึ่ง เช่น Logto จะส่งเหตุการณ์ PostRegister เมื่อผู้ใช้ลงทะเบียนเสร็จและสร้างบัญชีใหม่
Hookการกระทำหนึ่งหรือหลายอย่างที่ผูกกับเหตุการณ์เฉพาะ การกระทำอาจเป็นการเรียก API, รันโค้ด ฯลฯ
Webhookประเภทหนึ่งของ hook ที่หมายถึงการเรียก API พร้อม payload ของเหตุการณ์นั้น
สมมติว่านักพัฒนาต้องการส่งการแจ้งเตือนเมื่อผู้ใช้ลงชื่อเข้าใช้ผ่านอุปกรณ์ใหม่ นักพัฒนาสามารถเพิ่ม webhook ที่เรียก API ของบริการรักษาความปลอดภัยของเขากับเหตุการณ์ PostSignIn ได้

ตัวอย่างการเปิดใช้งาน web hook สองตัวสำหรับเหตุการณ์ PostSignIn ใน Logto:

คำถามที่พบบ่อย

Logto รองรับ synced webhook หรือไม่?

แม้ว่า synced webhook จะทำให้ flow การลงชื่อเข้าใช้ของผู้ใช้ราบรื่นขึ้น แต่ขณะนี้เรายังไม่รองรับ (แต่จะรองรับในอนาคต) ดังนั้นกรณีที่ต้องพึ่ง synced webhook ในปัจจุบันจำเป็นต้องใช้วิธีแก้ไขเฉพาะ หากมีคำถามเพิ่มเติมสามารถติดต่อเราได้

จะจัดการกับการเปลี่ยนแปลงสิทธิ์ของผู้ใช้อย่างไร?

จะแก้ไขปัญหา webhook timeout อย่างไร?

สำหรับ endpoint ที่รับ Webhook ควรตอบกลับด้วย response 2xx ให้เร็วที่สุดเพื่อแจ้ง Logto ว่าได้รับ Webhook แล้ว เนื่องจากแต่ละผู้ใช้อาจมีตรรกะการประมวลผล Webhook ที่แตกต่างกัน งานที่ซับซ้อนมากอาจใช้เวลาหลายวินาที ทำให้ Webhook ของ Logto timeout แนวทางที่ดีที่สุดคือสร้าง event queue ของคุณเอง เมื่อได้รับ Webhook จาก Logto ให้ใส่ event ลงใน queue แล้วตอบกลับ 2xx กลับไปที่ Logto จากนั้นให้ worker ของคุณประมวลผลงานใน queue ทีละขั้นตอน หาก worker พบข้อผิดพลาด ให้จัดการที่เซิร์ฟเวอร์ของคุณเอง

สามารถรับ client IP address จาก webhook PostSignIn ได้หรือไม่?

ได้ คุณสามารถรับ IP address, user agent ฯลฯ ใน payload ของ Webhook หากต้องการข้อมูลที่ยังไม่รองรับ สามารถสร้าง feature request ใน GitHub issues หรือ ติดต่อเรา

Webhooks vs. polling