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

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) จริง รูปแบบขึ้นอยู่กับประเภท Action
  • environmentVariables: ค่าข้อความที่ตั้งค่าสำหรับ 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 มีวัตถุประสงค์ต่างกัน:

ActionsWebhooks
การทำงานsynchronous และอยู่ในโฟลว์การยืนยันตัวตน (Authentication)asynchronous และอยู่นอกคำขอการยืนยันตัวตน (Authentication)
สามารถมีผลต่อโฟลว์การยืนยันตัวตน (Authentication) ปัจจุบันได้หรือไม่ได้ไม่ได้
สามารถแก้ไขผู้ใช้จากผลลัพธ์ได้หรือไม่ได้ โดยใช้ user patch ที่รองรับไม่ได้โดยตรง; ผู้รับสามารถเรียก Management API แยกต่างหาก
ครอบคลุมเหตุการณ์จุดการยืนยันตัวตน (Authentication) ที่เลือกไว้เหตุการณ์ interaction และการเปลี่ยนแปลงข้อมูลที่หลากหลาย
การใช้งานทั่วไปการย้ายข้อมูลรับรอง, enrich โปรไฟล์ก่อนออกโทเค็นการแจ้งเตือน, การซิงค์ downstream, การวิเคราะห์ข้อมูล

งานที่เป็น asynchronous ควรอยู่ใน Webhooks ใช้ Action เฉพาะเมื่อ Logto ต้องการผลลัพธ์ก่อนที่การยืนยันตัวตน (Authentication) จะดำเนินต่อได้

ขั้นตอนถัดไป