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

Actions

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

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

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

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

คำเตือน:

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

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

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 จะมีการตั้งค่าหนึ่งชุดและฟังก์ชัน 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) จะดำเนินต่อได้

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