Actions
Logto Actions ช่วยให้คุณสามารถรัน JavaScript ที่เชื่อถือได้ในจุดที่กำหนดในโฟลว์การยืนยันตัวตน (Authentication) สคริปต์ Action จะทำงานแบบ synchronous: คำขอการยืนยันตัวตนจะรอผลลัพธ์จากสคริปต์ และผลลัพธ์ของสคริปต์สามารถอัปเดตผู้ใช้หรือกำหนดได้ว่าโฟลว์จะดำเนินต่อหรือไม่
Actions มีประโยชน์เมื่อการตัดสินใจต้องเกิดขึ้นภายในโฟลว์การยืนยันตัวตน (Authentication) กรณีการใช้งานที่พบบ่อย เช่น:
- ย้ายผู้ใช้และรหัสผ่านจากระบบข้อมูลระบุตัวตนเดิมเมื่อผู้ใช้ลงชื่อเข้าใช้ครั้งแรก
- รีเฟรชโปรไฟล์ผู้ใช้หรือข้อมูลเฉพาะแอปก่อนที่ Logto จะดำเนินการลงชื่อเข้าใช้เสร็จสมบูรณ์
- เรียกใช้บริการภายนอกและนำผลลัพธ์มาใช้กับผู้ใช้ Logto
Actions มีให้ใช้งานใน Logto OSS และ Logto Cloud Enterprise plans
สคริปต์ Action สามารถมีผลต่อการยืนยันตัวตน (Authentication) และแก้ไขข้อมูลผู้ใช้ได้ เฉพาะผู้ดูแลระบบที่เชื่อถือได้เท่านั้นที่ควรได้รับอนุญาตให้ดู สร้าง แก้ไข ทดสอบ เปิดใช้งาน หรือ ลบ
ในกรณี self-hosted สคริปต์ Action จะถูกรันใน virtual machine ภายใน process ของ Logto ให้ถือว่าเป็นโค้ดฝั่งเซิร์ฟเวอร์ที่เชื่อถือได้ ไม่ใช่ขอบเขตความปลอดภัยสำหรับโค้ดที่ไม่เชื่อถือ
Actions อยู่ตรงไหนในโฟลว์การลงชื่อเข้าใช้
ปัจจุบัน Logto มี Action สองประเภท:
| ประเภท Action | ทำงานเมื่อไร | สามารถทำอะไรได้บ้าง |
|---|---|---|
| Post first-factor verification | ระหว่างการลงชื่อเข้าใช้ด้วยรหัสผ่าน เฉพาะเมื่อการตรวจสอบรหัสผ่านในระบบของ Logto ล้มเหลว จะไม่ทำงานเมื่อรหัสผ่านในระบบถูกต้อง | ตรวจสอบข้อมูลรับรองกับระบบเดิม จากนั้นสร้างผู้ใช้ Logto ใหม่หรืออัปเดตผู้ใช้เดิมและย้ายรหัสผ่านที่ส่งมา |
| Post sign-in | หลังจากผู้ใช้ผ่านการยืนยันตัวตน (Authentication) ทุกปัจจัย รวมถึง MFA (ถ้าจำเป็น) และก่อนที่ Logto จะดำเนินการลงชื่อเข้าใช้และออกโทเค็น | อัปเดตและเติมข้อมูลผู้ใช้ Logto ที่มีอยู่โดยใช้ context การลงชื่อเข้าใช้สุดท้าย |
Action ทั้งสองประเภทจะทำงานเฉพาะกับ interaction SignIn ใน Experience API เท่านั้น Post first-factor verification ใช้กับการลงชื่อเข้าใช้ด้วยรหัสผ่านเท่านั้น ส่วน Post sign-in ไม่ขึ้นกับวิธีการยืนยันตัวตน (Authentication)
โมเดลของสคริปต์
แต่ละประเภท Action จะมีการตั้งค่าหนึ่งชุดและฟังก์ชัน entry JavaScript ชื่อ runAction:
const runAction = async ({ event, environmentVariables = {} }) => {
// ตรวจสอบ event, ดึงข้อมูลภายนอกถ้าต้องการ, และคืนค่าผลลัพธ์ที่รองรับโดย Action ประเภทนี้
};
payload ประกอบด้วย:
event: เหตุการณ์การยืนยันตัวตน (Authentication) จริง รูปแบบขึ้นอยู่กับประเภท ActionenvironmentVariables: ค่าข้อความที่ตั้งค่าสำหรับ Action นี้ ค่านี้จะถูกส่งผ่าน payload ของฟังก์ชัน ไม่สามารถเข้าถึงผ่านprocess.env
ตัว editor จะให้ข้อมูล type แต่สคริปต์ที่บันทึกจะถูกรันเป็น JavaScript สคริปต์อาจเป็น async และสามารถใช้ฟังก์ชัน fetch ที่ inject มาเพื่อเรียก API HTTPS ภายนอกได้ ไม่สามารถ import package หรือเข้าถึง global ของ Node.js เช่น require หรือ process
ผลลัพธ์ที่รองรับจะแตกต่างกันไปตามประเภท Action โปรดดูหน้าข้อมูลอ้างอิงของแต่ละประเภทก่อนเปิดใช้งาน Action
Actions และ Webhooks
Actions และ Webhooks มีวัตถุประสงค์ต่างกัน:
| Actions | Webhooks | |
|---|---|---|
| การทำงาน | synchronous และอยู่ในโฟลว์การยืนยันตัวตน (Authentication) | asynchronous และอยู่นอกคำขอการยืนยันตัวตน (Authentication) |
| สามารถมีผลต่อโฟลว์การยืนยันตัวตน (Authentication) ปัจจุบันได้หรือไม่ | ได้ | ไม่ได้ |
| สามารถแก้ไขผู้ใช้จากผลลัพธ์ได้หรือไม่ | ได้ โดยใช้ user patch ที่รองรับ | ไม่ได้โดยตรง; ผู้รับสามารถเรียก Management API แยกต่างหาก |
| ครอบคลุมเหตุการณ์ | จุดการยืนยันตัวตน (Authentication) ที่เลือกไว้ | เหตุการณ์ interaction และการเปลี่ยนแปลงข้อมูลที่หลากหลาย |
| การใช้งานทั่วไป | การย้ายข้อมูลรับรอง, enrich โปรไฟล์ก่อนออกโทเค็น | การแจ้งเตือน, การซิงค์ downstream, การวิเคราะห์ข้อมูล |
งานที่เป็น asynchronous ควรอยู่ใน Webhooks ใช้ Action เฉพาะเมื่อ Logto ต้องการผลลัพธ์ก่อนที่การยืนยันตัวตน (Authentication) จะดำเนินต่อได้