ข้ามไปเนื้อหาหลัก
ความปลอดภัย· ~12 นาที· อัปเดตล่าสุด

Cognito

ระบบ login/สมัครสมาชิกสำหรับผู้ใช้แอปของเรา

ระบบสมาชิกลูกค้า

IAM ดูแล "พนักงานหลังบ้านของเรา (พนักงานบริษัท)", ส่วน Cognito ดูแล "ลูกค้าที่มาใช้แอปหรือเว็บหน้าร้านของเรา" — มันคือระบบสำหรับจัดการการสมัครสมาชิก (Sign-up) และเข้าสู่ระบบ (Sign-in) ของผู้ใช้ปลายทาง

Amazon Cognito (ระบบล็อกอินสำหรับผู้ใช้แอป) ช่วยให้เราเพิ่มระบบล็อกอินเข้าแอปได้ง่ายๆ โดยแบ่งเป็น 2 ส่วนหลักๆ คือ:

  • User Pool — เหมือนสมุดรายชื่อ (Directory) ผู้ใช้: ทำหน้าที่จัดการการสมัคร, ล็อกอิน, MFA, ลืมรหัสผ่าน รวมถึงรองรับการล็อกอินผ่านผู้ให้บริการอื่น (Google/Facebook/Apple/SAML)
  • Identity Pool — เมื่อล็อกอินผ่าน User Pool สำเร็จแล้ว Identity Pool จะเสกโทเคนไปแลกสิทธิ์ชั่วคราว (ผ่าน IAM role) เพื่อให้ผู้ใช้คนนั้นสามารถดึงข้อมูลจากบริการ AWS โดยตรง (เช่น โหลดไฟล์จาก S3 ส่วนตัว) อย่างปลอดภัย

สรุป Key Takeaways

  • Cognito = ระบบ identity สำหรับผู้ใช้ปลายทางของแอป (ไม่ใช่ทีมแอดมิน)
  • User Pool = สมัคร/ล็อกอิน + social login, Identity Pool = ให้สิทธิ์เข้าถึง AWS
  • งานล็อกอินผู้ใช้แอป → Cognito, งานสิทธิ์ผู้ดูแล AWS → IAM

คำถามที่พบบ่อย

User Pool กับ Identity Pool ต่างกันยังไง

User Pool = ระบบสมาชิก (สมัคร/ล็อกอิน/MFA ให้แอปเรา ได้ JWT token) ส่วน Identity Pool = แลก token เป็น "credential AWS ชั่วคราว" เพื่อให้ผู้ใช้เข้าถึงบริการ AWS ตรงๆ (เช่น อัปโหลดขึ้น S3) — โจทย์ "ให้ผู้ใช้แอป mobile อัปโหลดไฟล์เข้า S3" = ใช้คู่กัน โดย Identity Pool เป็นตัวออกสิทธิ์

อยากให้ล็อกอินด้วย Google/Facebook ทำยังไง

User Pool รองรับ federation กับ social provider และ SAML/OIDC ขององค์กร — ผู้ใช้ล็อกอินผ่าน provider ที่เลือก แต่แอปเราคุยกับ Cognito ที่เดียวรูปแบบ token เดียว ไม่ต้องเขียนรองรับทีละเจ้า

ลองทำ Quiz ท้ายบท

คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

อ่านจบแล้วอย่าลืมทำเครื่องหมาย