Webhook
Logto Webhook ให้การแจ้งเตือนแบบเรียลไทม์สำหรับเหตุการณ์ต่าง ๆ รวมถึงการเปลี่ยนแปลงบัญชีผู้ใช้, บทบาท (Role), สิทธิ์ (Permission), องค์กร (Organization), บทบาทขององค์กร, สิทธิ์ขององค์กร และ การโต้ตอบของผู้ใช้
เมื่อเกิดเหตุการณ์ Logto จะส่ง HTTP request ไปยัง Endpoint URL ที่คุณกำหนด โดยมีข้อมูลรายละเอียดของเหตุการณ์ เช่น user ID, username, email และรายละเอียดอื่น ๆ ที่เกี่ยวข้อง (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลใน payload และ header ดูที่ Webhook request) แอปพลิเคชันของคุณสามารถประมวลผล request นี้และดำเนินการที่กำหนดเอง เช่น ส่งอีเมล หรืออัปเดตข้อมูลในฐานข้อมูล
เรายังคงเพิ่มเหตุการณ์ใหม่ ๆ ตามความต้องการของผู้ใช้ หากคุณมีความต้องการเฉพาะสำหรับธุรกิจของคุณ กรุณาแจ้งให้เราทราบ
ทำไมต้องใช้ Webhook?
Webhook มอบการสื่อสารแบบเรียลไทม์ระหว่างแอปพลิเคชัน ช่วยลดความจำเป็นในการ polling และทำให้ข้อมูลอัปเดตทันที ช่วยให้การผสานระบบและการทำงานอัตโนมัติของแอปพลิเคชันง่ายขึ้นโดยไม่ต้องใช้โค้ดที่ซับซ้อนหรือ API เฉพาะทาง
ตัวอย่างการใช้งาน Webhook ที่พบบ่อยสำหรับ CIAM:
- ส่งอีเมล: ตั้งค่า Webhook เพื่อส่งอีเมลต้อนรับให้ผู้ใช้ใหม่เมื่อสมัคร หรือแจ้งเตือนผู้ดูแลระบบเมื่อผู้ใช้ลงชื่อเข้าใช้จากอุปกรณ์หรือสถานที่ใหม่
- ส่งการแจ้งเตือน: ตั้งค่า Webhook เพื่อเรียกผู้ช่วยเสมือนกับระบบ CRM ของคุณเพื่อให้การสนับสนุนลูกค้าแบบเรียลไทม์เมื่อผู้ใช้สมัคร
- เรียก API เพิ่มเติม: ตั้งค่า Webhook เพื่อตรวจสอบการเข้าถึงของผู้ใช้โดยเช็ค domain อีเมลหรือ IP address จากนั้นใช้ Logto Management API เพื่อกำหนดบทบาท (Role) และสิทธิ์ (Permission) ที่เหมาะสม
- ซิงค์ข้อมูล: ตั้งค่า Webhook เพื่อให้แอปพลิเคชันอัปเดตเกี่ยวกับการเปลี่ยนแปลง เช่น การระงับหรือการลบบัญชีผู้ใช้
- สร้างรายงาน: ตั้งค่า Webhook เพื่อรับข้อมูลกิจกรรมการเข้าสู่ระบบของผู้ใช้และนำไปสร้างรายงานการมีส่วนร่วม หรือรูปแบบการใช้งานของผู้ใช้
คำศัพท์
| Item | Description |
|---|---|
| Event | เมื่อมีการดำเนินการเฉพาะ จะเกิด hook event ประเภทหนึ่ง เช่น Logto จะส่ง PostRegister hook event เมื่อผู้ใช้สมัครเสร็จและสร้างบัญชีใหม่แล้ว |
| 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 ควรตอบกลับด้วย 2xx response ให้เร็วที่สุดเพื่อแจ้ง Logto ว่าได้รับ Webhook แล้ว เนื่องจากแต่ละผู้ใช้อาจมีตรรกะการประมวลผล Webhook ที่แตกต่างกัน งานที่ซับซ้อนมากอาจใช้เวลาหลายวินาที ทำให้ Webhook ของ Logto timeout แนวทางที่ดีที่สุดคือสร้าง event queue ของคุณเอง เมื่อได้รับ Webhook จาก Logto ให้ใส่ event ลงใน queue แล้วตอบกลับ 2xx response จากนั้นให้ worker ของคุณประมวลผลงานใน queue ทีละขั้น หาก worker พบข้อผิดพลาด ให้จัดการที่เซิร์ฟเวอร์ของคุณเอง
ฉันสามารถรับ client IP address จาก webhook PostSignIn ได้หรือไม่?
PostSignIn ได้หรือไม่?ได้ คุณสามารถรับ IP address, user agent ฯลฯ ใน payload ของ Webhook หากคุณต้องการข้อมูลที่ยังไม่รองรับในปัจจุบัน สามารถสร้าง feature request ใน GitHub issues หรือ ติดต่อเรา