การยืนยันตัวตนผู้ใช้ด้วย Amazon Cognito
การ Deploy แอปพลิเคชันบน AWS
Dunieski Otano
Amazon Web Services Solutions Architect
สร้างระบบล็อกอินเอง?
แอปใหม่ต้องการระบบสมัครและล็อกอินแบบครบวงจร
ทีมเริ่มสร้างระบบ auth ขึ้นมาเอง
Cognito ทำสิ่งนี้ได้อย่างปลอดภัยอยู่แล้ว
User pool vs Identity pool
User pool
: ไดเรกทอรีผู้ใช้แบบ managed
จัดการสมัคร, ล็อกอิน และออก
token
Identity pool
: แลกเปลี่ยนการล็อกอินเป็น
AWS credentials
ใช้ร่วมกัน: ยืนยันตัวตนก่อน แล้วจึงอนุญาตการเข้าถึง AWS
Cognito token ทั้งสามประเภท
ID token
: ระบุว่าผู้ใช้คือใคร (identity claims)
Access token
: ระบุสิ่งที่ผู้ใช้เรียกใช้ได้
Refresh token
: ขอ token ใหม่โดยไม่ต้องล็อกอินซ้ำ
ทั้งสามตัวเป็น
JWT
ที่ถอดรหัสและตรวจสอบได้
Federated identity
Federation
: ล็อกอินด้วย identity provider ภายนอก
โซเชียล: Google, Facebook, Apple
องค์กร: provider แบบ
SAML
และ
OIDC
Cognito ทำหน้าที่เชื่อมความน่าเชื่อถือและออก token ของตัวเอง
Cognito ในฐานะ API Gateway authorizer
API Gateway ใช้
Cognito authorizer
ได้
Client ส่ง token ใน
Authorization header
API Gateway ตรวจสอบ token ก่อน backend ทำงาน
Token ที่ไม่ถูกต้องหรือหมดอายุจะ
ถูกปฏิเสธตั้งแต่ขอบ
ขั้นตอนทั่วไปจากการล็อกอินถึงการเรียก API
ผู้ใช้ล็อกอินเข้า
user pool
รับ ID, access และ refresh token
Client เรียก API Gateway พร้อม
access token
Cognito authorizer ตรวจสอบ token แล้ว backend จึงทำงาน
ข้อผิดพลาดที่พบบ่อยกับ Cognito
ส่ง
ID token
ในตำแหน่งที่ควรเป็น access token
สับสนระหว่าง user pool กับ identity pool
พยายามอนุญาต
การเข้าถึง AWS
ด้วย user pool เพียงอย่างเดียว
เก็บ token อย่างไม่ปลอดภัยบฝั่ง client
มาฝึกกันเถอะ!
การ Deploy แอปพลิเคชันบน AWS
Preparing Video For Download...