Amazon Cognito
Đăng nhập cho người dùng app
Đăng ký/đăng nhập cho người dùng cuối (email, Google, Facebook, SAML), cấp token JWT để gọi API.
- Chi phí$$ Vừa phải
- Độ khó●●●●●
- Để không có tốn tiền?Không
- AWS quản lý
- Có trong đềSAA · DVA
Hình dungNhư quầy làm thẻ thành viên cho khách của cửa hàng.
Cognito đứng ở đâu trong hệ thống?
Gọi tới Cognito
API Gatewaykiểm tra token
- Người dùngđăng nhập
Một ví dụ thật, từng bước
- Bạn làm app chia sẻ ảnh và cần đăng ký, đăng nhập, quên mật khẩu, đăng nhập bằng Google.
- Bạn tạo Cognito user pool, bật MFA và nút “Đăng nhập với Google”; giao diện đăng nhập có sẵn.
- Người dùng đăng nhập xong nhận token JWT; API Gateway kiểm tra token trước khi cho gọi API.
- Identity pool đổi token đó lấy quyền AWS tạm thời để app tải ảnh thẳng lên thư mục riêng của người dùng trên S3.
- Không phải tự lưu mật khẩu hay tự viết chức năng gửi mã xác minh.
Khi nào nên dùng
✓ Nên dùng khi
Web/mobile app cần tài khoản người dùng.
✗ Không nên dùng khi
Nhân viên đăng nhập vào AWS → IAM Identity Center.
Ví dụ hay gặp
- Đăng ký / đăng nhập cho web và mobile app
- Đăng nhập bằng Google, Facebook, Apple hoặc SAML doanh nghiệp
- Cấp quyền tạm để app truy cập thẳng S3 (identity pool)
Cognito, IAM Identity Center hay IAM?
| Dành cho | Người dùng cuối của app | Nhân viên vào tài khoản AWS | Quyền trong tài khoản AWS |
|---|---|---|---|
| Đăng nhập bằng | Email, mạng xã hội, SAML/OIDC | Thư mục công ty (SSO) | Mật khẩu, access key, role |
| Quy mô | Hàng triệu người dùng | Nhân viên công ty | Người quản trị và dịch vụ |
| Phí | Theo số người dùng hoạt động | Miễn phí | Miễn phí |
Tốn bao nhiêu tiền?
- Cách tính: Theo MAU (người dùng hoạt động mỗi tháng), giá khác nhau theo gói Lite / Essentials / Plus; người dùng đăng nhập bằng SAML/OIDC tính riêng.
- Miễn phí: 10.000 MAU đầu tiên miễn phí mỗi tháng (gói Lite/Essentials).
Chọn gói cao hơn nhu cầu; SMS gửi mã OTP tính phí riêng; người dùng liên kết SAML có giá cao hơn.
User pool = đăng ký/đăng nhập, trả token; identity pool = đổi danh tính lấy quyền AWS tạm thời. App mobile cần truy cập S3/DynamoDB mà không nhúng access key → identity pool. Cognito làm authorizer cho API Gateway.
Thử sức với câu hỏi thi thật
1A company designs a mobile app for its customers to upload photos to a website. The app needs a secure login with multi-factor authentication (MFA). The company wants to limit the initial build time and the maintenance of the solution. Which solution should a solutions architect recommend to meet these requirements?
- AUse Amazon Cognito user pools with SMS-based MFA.
- BEdit IAM policies to require MFA for all users.
- CFederate IAM against the corporate Active Directory that requires MFA.
- DUse Amazon API Gateway and require server-side encryption (SSE) for photos.
Xem đáp án
Đáp án đúng: A
Cognito user pool có sẵn đăng ký, đăng nhập và MFA qua SMS cho người dùng app, nên xây nhanh và ít bảo trì. IAM dành cho người quản trị AWS, không dành cho khách hàng của app.
2A company wants to restrict access to the content of its web application. The company needs to protect the content by using authorization techniques that are available on AWS. The company also wants to implement a serverless architecture for authorization and authentication that has low login latency. The solution must integrate with the web application and serve web content globally. The application currently has a small user base, but the company expects the application's user base to increase. Which solution will meet these requirements?
- AConfigure Amazon Cognito for authentication. Implement Lambda@Edge for authorization. Configure Amazon CloudFront to serve the web application globally.
- BConfigure AWS Directory Service for Microsoft Active Directory for authentication. Implement AWS Lambda for authorization. Use an Application Load Balancer to serve the web application globally.
- CConfigure Amazon Cognito for authentication. Implement AWS Lambda for authorization. Use Amazon S3 Transfer Acceleration to serve the web application globally.
- DConfigure AWS Directory Service for Microsoft Active Directory for authentication. Implement Lambda@Edge for authorization. Use AWS Elastic Beanstalk to serve the web application globally.
Xem đáp án
Đáp án đúng: A
Cognito lo xác thực người dùng, Lambda@Edge kiểm tra quyền ngay tại điểm biên, CloudFront phân phối nội dung toàn cầu: tất cả serverless, độ trễ thấp.
Câu hỏi thường gặp
User pool khác identity pool thế nào?
User pool là thư mục người dùng: đăng ký, đăng nhập, MFA, đăng nhập bằng Google hay Facebook, trả về token JWT. Identity pool đổi danh tính (kể cả khách vãng lai) lấy thông tin đăng nhập AWS tạm thời để gọi trực tiếp dịch vụ như S3 hay DynamoDB.
Cognito tính tiền thế nào?
Chủ yếu theo số người dùng hoạt động mỗi tháng (MAU) của user pool, khác nhau theo gói tính năng (Lite, Essentials, Plus). Một số tính năng như đăng nhập qua SAML hay OIDC và bảo mật nâng cao tính thêm phí.
Đề thi AWS hay hỏi gì về Cognito?
Phân biệt user pool và identity pool, dùng Cognito làm authorizer cho API Gateway, đăng nhập bằng mạng xã hội, và cấp quyền AWS tạm thời cho ứng dụng mobile mà không nhúng access key.