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

Actions

Logto Actions ช่วยให้คุณสามารถรัน JavaScript ที่เชื่อถือได้ในจุดที่กำหนดในโฟลว์การยืนยันตัวตน (Authentication) สคริปต์ Action จะทำงานแบบซิงโครนัส: คำขอการยืนยันตัวตนจะรอผลลัพธ์จากสคริปต์ และผลลัพธ์ของสคริปต์สามารถอัปเดตผู้ใช้หรือกำหนดได้ว่าโฟลว์จะดำเนินต่อหรือไม่

Actions มีประโยชน์เมื่อการตัดสินใจต้องเกิดขึ้นภายในโฟลว์การยืนยันตัวตน (Authentication) กรณีการใช้งานที่พบบ่อย เช่น:

  • ย้ายผู้ใช้และรหัสผ่านจากระบบข้อมูลระบุตัวตนเดิมเมื่อผู้ใช้ลงชื่อเข้าใช้ครั้งแรก
  • รีเฟรชโปรไฟล์ผู้ใช้หรือข้อมูลเฉพาะแอปก่อนที่ Logto จะเสร็จสิ้นการลงชื่อเข้าใช้
  • เรียกใช้บริการภายนอกและนำผลลัพธ์มาใช้กับผู้ใช้ Logto
บันทึก:

Actions มีให้ใช้งานใน Logto Cloud แผน Enterprise

คำเตือน:

สคริปต์ Action สามารถมีผลต่อการยืนยันตัวตน (Authentication) และแก้ไขข้อมูลผู้ใช้ได้ เฉพาะผู้ดูแลระบบที่เชื่อถือได้เท่านั้นที่ควรได้รับสิทธิ์ในการดู สร้าง แก้ไข ทดสอบ เปิดใช้งาน หรือ ลบ

ในระบบที่โฮสต์เอง สคริปต์ Action จะรันภายในโพรเซสของเซิร์ฟเวอร์ Logto พร้อมสิทธิ์ของมัน การให้สิทธิ์แก้ไขหรือทดสอบสคริปต์เทียบเท่ากับการให้สิทธิ์รันโค้ดบนโฮสต์ Logto ดังนั้น Admin Console ไม่ควรถูกแชร์กับผู้ใช้ที่ไม่เชื่อถือ ปฏิบัติต่อสคริปต์เสมือนเป็นโค้ดฝั่งเซิร์ฟเวอร์ที่เชื่อถือได้; runtime จะจำกัดเวลาและหน่วยความจำของสคริปต์ แต่ไม่ใช่ขอบเขตความปลอดภัยสำหรับโค้ดที่ไม่เชื่อถือ

Actions อยู่ตรงไหนในโฟลว์การลงชื่อเข้าใช้

ปัจจุบัน Logto มี Action สองประเภท:

ประเภท Actionเมื่อไหร่ที่รันสามารถทำอะไรได้บ้าง
Post first-factor verificationระหว่างการลงชื่อเข้าใช้ด้วยรหัสผ่าน เฉพาะเมื่อการตรวจสอบรหัสผ่านภายในของ Logto ล้มเหลว จะไม่รันเมื่อรหัสผ่านภายในถูกต้องตรวจสอบข้อมูลรับรองกับระบบเดิม จากนั้นสร้างผู้ใช้ Logto ใหม่หรืออัปเดตผู้ใช้เดิมและย้ายรหัสผ่านที่ส่งมา
Post sign-inหลังจากผู้ใช้ผ่านการยืนยันตัวตน (Authentication) ทุกปัจจัย รวมถึง MFA (ถ้าจำเป็น) และก่อนที่ Logto จะเสร็จสิ้นการลงชื่อเข้าใช้และออกโทเค็นอัปเดตและเติมข้อมูลผู้ใช้ Logto ที่มีอยู่โดยใช้บริบทการลงชื่อเข้าใช้สุดท้าย

Action ทั้งสองประเภทจะรันเฉพาะสำหรับ SignIn interactions ใน Experience API เท่านั้น Post first-factor verification ใช้กับการลงชื่อเข้าใช้ด้วยรหัสผ่านเท่านั้น; Post sign-in ไม่ขึ้นกับวิธีการยืนยันตัวตน (Authentication)

โมเดลของสคริปต์

แต่ละประเภท Action จะมีการตั้งค่าหนึ่งชุดและฟังก์ชัน JavaScript ชื่อ runAction หนึ่งตัว:

const runAction = async ({ event, environmentVariables = {} }) => {
// ตรวจสอบ event, ดึงข้อมูลภายนอกถ้าต้องการ และคืนค่าผลลัพธ์ที่รองรับโดย Action ประเภทนี้
};

ข้อมูลที่ส่งเข้าไปประกอบด้วย:

  • event: เหตุการณ์การยืนยันตัวตน (Authentication) จริง รูปร่างของข้อมูลขึ้นอยู่กับประเภท Action
  • environmentVariables: ค่าข้อความที่ตั้งค่าสำหรับ Action นี้ ค่านี้จะถูกส่งผ่าน payload ของฟังก์ชัน; จะไม่สามารถเข้าถึงผ่าน process.env

ตัวแก้ไข (editor) จะให้ข้อมูลชนิด (type) แต่สคริปต์ที่บันทึกจะถูกรันเป็น JavaScript สคริปต์อาจเป็น async และสามารถใช้ Web API มาตรฐานเหล่านี้ได้ทั้งใน Logto Cloud และ Logto ที่โฮสต์เอง:

  • fetch, Request, Response, และ Headers
  • Web Crypto ผ่าน crypto และ crypto.subtle
  • TextEncoder และ TextDecoder
  • URL และ URLSearchParams

สคริปต์ไม่สามารถ import แพ็กเกจได้ หลีกเลี่ยงการใช้ global หรือ module เฉพาะ Node.js เพราะไม่สามารถใช้งานข้ามระหว่าง Logto ที่โฮสต์เองกับ Logto Cloud และไม่อยู่ในข้อตกลงการรองรับสคริปต์

ผลลัพธ์ที่รองรับจะแตกต่างกันไปตามแต่ละประเภท Action; โปรดดูหน้าข้อมูลอ้างอิงของแต่ละประเภทก่อนเปิดใช้งาน Action

Actions และ Webhooks

Actions และ Webhooks มีวัตถุประสงค์ต่างกัน:

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

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

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