• Logto
  • Cloudflare Workers
  • Workers
  • authorization
  • authentication
  • SaaS
  • tenant
  • serverless

Logto x Cloudflare Workers: วิธีรักษาความปลอดภัยให้ Workers ของคุณจากการเข้าถึงของสาธารณะ

ในบทความนี้ เราได้นำเสนอวิธีการรักษาความปลอดภัย API ของ Cloudflare Workers ของคุณด้วย Logto โดยเราใช้ Hono เป็นเฟรมเวิร์กแอปพลิเคชันเว็บเพื่อทำให้การพัฒนาเป็นไปอย่างง่ายดาย

Darcy Ye
Darcy Ye
Developer

Cloudflare Workers (ใช้คำว่า Workers สั้น ๆ ในเนื้อหาต่อไปนี้) มอบสภาพแวดล้อมการดำเนินงานแบบเซิร์ฟเวอร์เลส ที่ช่วยให้คุณสร้างแอปพลิเคชันใหม่ หรือเสริมแอปพลิเคชันที่มีอยู่ได้โดยไม่ต้องกำหนดค่าหรือดูแลรักษาโครงสร้างพื้นฐาน

ด้วย Workers คุณสามารถสร้างแอปพลิเคชันเซิร์ฟเวอร์เลสของคุณและปรับใช้ได้ทันทีทั่วโลกเพื่อประสิทธิภาพที่ยอดเยี่ยม ความน่าเชื่อถือ และขนาด Workers ไม่เพียงแต่มอบประสิทธิภาพที่ยอดเยี่ยมแต่ยังให้แผนฟรีที่ให้เยอะมาก ๆ และแผนเสียค่าบริการที่ราคาไม่แพงอีกด้วย ไม่ว่าคุณจะเป็นนักพัฒนารายบุคคลหรือทีมขนาดใหญ่ Workers ช่วยให้คุณพัฒนาและส่งมอบผลิตภัณฑ์ได้อย่างรวดเร็วในขณะเดียวกันลดภาระในการดำเนินงานลงได้

Workers สามารถเข้าถึงได้โดยสาธารณะตามค่าเริ่มต้น จึงจำเป็นต้องมีมาตรการป้องกันเพื่อป้องกันการโจมตีและการใช้งานที่ไม่เหมาะสม Logto นำเสนอบริการระบุตัวตนที่ครบวงจร ใช้งานง่ายและมีขนาดใหญ่ที่สามารถปกป้อง Workers และบริการเว็บอื่น ๆ ทั้งหมดของคุณ

บทความนี้เจาะลึกกระบวนการรักษาความปลอดภัยให้กับ Workers ของคุณโดยใช้ Logto

สร้างตัวอย่าง Workers

มาก่อสร้างโปรเจกต์ตัวอย่าง Workers ด้วย Hono ในเครื่องท้องถิ่นกัน

เราใช้คำสั่ง CLI ของ Wrangler เพื่อปรับใช้ตัวอย่างไปยัง Cloudflare ทำให้เราสามารถเข้าถึงเส้นทางได้

Deploy sample

ป้องกัน API ของ Workers

เพื่อเปรียบเทียบ API ที่สามารถเข้าถึงได้โดยสาธารณะและ API ที่ได้รับการป้องกัน เราเพิ่ม API GET /auth/greet ซึ่งต้องการช่วงที่เฉพาะเจาะจงในการเข้าถึง

เราไม่สามารถเข้าถึง API ที่สอดคล้องกันได้หากไม่มีสิทธิ์ที่ถูกต้อง

Request authed greet

เพื่อจัดการการเข้าถึง API ของ Workers อย่างถูกต้อง เราแนะนำ Logto

ตั้งค่า Logto

ลงทะเบียนบัญชีหากคุณยังไม่มี

เราใช้ Machine-to-machine (M2M) เป็นตัวอย่างในการเข้าถึง API ของ Workers ที่ได้รับการป้องกันเพราะใช้งานง่าย หากคุณต้องการให้ผู้ใช้เว็บแอปของคุณเข้าสู่ระบบ การตั้งค่าจะคล้ายกันแต่คุณควรใช้บทบาท “User” แทนบทบาท “Machine-to-machine”

  1. เข้าสู่ Logto Admin Console และไปยังแท็บ “API resource” สร้างทรัพยากร API ชื่อ “Workers sample API” พร้อมตัวบ่งชี้ทรัพยากรเป็น https://sample.workers.dev/ และสร้างสิทธิ์ greet:visitor สำหรับทรัพยากร API นี้ด้วย

Create Workers sample API resource

  1. สร้างบทบาท “Workers admin role” ซึ่งเป็นบทบาท “Machine-to-machine” และกำหนดช่วง greet:visitor ให้กับบทบาทนี้

Create M2M role

  1. สร้างแอป M2M และกำหนดบทบาท “Workers admin role” ให้กับแอปนี้

Create M2M app

อัปเดตตัวตรวจสอบสิทธิ์ Workers

เนื่องจาก Logto ใช้ JWT access token ภายใต้การจัดการ เราจำเป็นต้องฝังตรรกะการตรวจสอบ JWT ใน Workers

ในเมื่อ JWT access token ถูกสร้างโดย Logto เราจึงจำเป็นต้อง:

  1. รับกุญแจสาธารณะที่สอดคล้องกันเพื่อยืนยันลายเซ็น
  2. ยืนยันผู้บริโภคของ JWT access token ว่าเป็น Workers APIs

ค่าคงที่เหล่านี้สามารถกำหนดค่าในไฟล์ wrangler.toml [1] และจะถูกใช้เป็นตัวแปรสิ่งแวดล้อมของ Workers คุณยังสามารถจัดการตัวแปรสิ่งแวดล้อมด้วยตนเองในแดชบอร์ด Cloudflare ได้อีกด้วย

หลังจากปรับใช้โครงการ Workers ไปยัง Cloudflare แล้ว เราสามารถทดสอบได้ว่า API ได้รับการป้องกันอย่างสำเร็จหรือไม่

  1. รับ access token

Get access token

Inspect JWT

  1. ขอ API GET /auth/greet ของ Workers

Access authed API

บทสรุป

ด้วยคู่มือแบบขั้นตอนต่อขั้นตอนในบทความนี้ คุณควรจะสามารถใช้ Logto เพื่อสร้างการป้องกันสำหรับ API ของ Workers ของคุณได้

ในบทความนี้เราได้ใช้ Wrangler CLI สำหรับการพัฒนาและปรับใช้โครงการ Workers ในเครื่องท้องถิ่น Cloudflare ยังมี Workers APIs ที่แข็งแกร่งและหลากหลายเพื่อช่วยในการปรับใช้และการจัดการ

ลองพิจารณาพัฒนาแอปพลิเคชัน SaaS ดู API ของ Cloudflare จะช่วยให้คุณสามารถปรับใช้ Workers พิเศษสำหรับผู้เช่าทุกคนได้อย่างง่ายดาย ในขณะนั้น Logto จะทำให้มั่นใจว่า access tokens จะยังคงเป็นของแต่ละผู้เช่า ซึ่งการควบคุมในลักษณะนี้จะป้องกันการเข้าถึงที่ไม่ได้รับอนุญาตระหว่างผู้เช่า เพิ่มความปลอดภัยและความเป็นส่วนตัวของข้อมูลสำหรับผู้ใช้แอป SaaS ของคุณ

สถาปัตยกรรมที่ปรับตัวและแข็งแกร่งของ Logto สนองตอบต่อความต้องการการยืนยันตัวตนและการอนุญาตที่หลากหลายของแอปพลิเคชันต่าง ๆ ไม่ว่าคุณจะสร้างแพลตฟอร์ม SaaS ที่ซับซ้อนหรือเว็บแอปที่ง่าย Logto ก็มีความยืดหยุ่นและรองรับการขยายได้เพื่อตอบสนองความต้องการเฉพาะของคุณ